o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
/* $NetBSD: pcmciavar.h,v 1.12 2000/02/08 12:51:31 enami Exp $ */
|
1999-10-26 06:52:31 +00:00
|
|
|
/* $FreeBSD$ */
|
|
|
|
|
2005-01-06 01:43:34 +00:00
|
|
|
/*-
|
1999-10-26 06:52:31 +00:00
|
|
|
* Copyright (c) 1997 Marc Horowitz. 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 Marc Horowitz.
|
|
|
|
* 4. The name of the author may not be used to endorse or promote products
|
|
|
|
* derived from this software without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.
|
|
|
|
*/
|
|
|
|
|
2005-06-24 14:36:54 +00:00
|
|
|
/*
|
|
|
|
* PCCARD_API_LEVEL. When set to 5, we provide a 5.x compatable API
|
|
|
|
* for driver writers that have to share their code between 5.x and 6.x.
|
|
|
|
* The 5.x compatibility interfaces will be unsupported in 7.0, at which
|
|
|
|
* point we'll only support 6 and newer, etc.
|
|
|
|
*/
|
|
|
|
#ifndef PCCARD_API_LEVEL
|
|
|
|
#define PCCARD_API_LEVEL 6
|
|
|
|
#elif PCCARD_API_LEVEL < 5
|
|
|
|
#error "pccard API less than 5 unsupported"
|
|
|
|
#endif
|
|
|
|
|
1999-10-26 06:52:31 +00:00
|
|
|
/*
|
|
|
|
* Contains information about mapped/allocated i/o spaces.
|
|
|
|
*/
|
|
|
|
struct pccard_io_handle {
|
|
|
|
bus_space_tag_t iot; /* bus space tag (from chipset) */
|
|
|
|
bus_space_handle_t ioh; /* mapped space handle */
|
|
|
|
bus_addr_t addr; /* resulting address in bus space */
|
|
|
|
bus_size_t size; /* size of i/o space */
|
|
|
|
int flags; /* misc. information */
|
1999-12-07 06:44:38 +00:00
|
|
|
int width;
|
1999-10-26 06:52:31 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#define PCCARD_IO_ALLOCATED 0x01 /* i/o space was allocated */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Contains information about allocated memory space.
|
|
|
|
*/
|
|
|
|
struct pccard_mem_handle {
|
|
|
|
bus_space_tag_t memt; /* bus space tag (from chipset) */
|
|
|
|
bus_space_handle_t memh; /* mapped space handle */
|
|
|
|
bus_addr_t addr; /* resulting address in bus space */
|
|
|
|
bus_size_t size; /* size of mem space */
|
|
|
|
bus_size_t realsize; /* how much we really allocated */
|
2002-01-29 16:57:50 +00:00
|
|
|
bus_addr_t cardaddr; /* Absolute address on card */
|
1999-12-07 06:44:38 +00:00
|
|
|
int kind;
|
1999-10-26 06:52:31 +00:00
|
|
|
};
|
|
|
|
|
2000-04-19 08:31:21 +00:00
|
|
|
#define PCCARD_WIDTH_AUTO 0
|
|
|
|
#define PCCARD_WIDTH_IO8 1
|
|
|
|
#define PCCARD_WIDTH_IO16 2
|
|
|
|
|
1999-10-26 06:52:31 +00:00
|
|
|
struct pccard_tuple {
|
|
|
|
unsigned int code;
|
|
|
|
unsigned int length;
|
2005-09-20 06:47:33 +00:00
|
|
|
u_long mult; /* dist btn successive bytes */
|
1999-10-26 06:52:31 +00:00
|
|
|
bus_addr_t ptr;
|
|
|
|
bus_space_tag_t memt;
|
|
|
|
bus_space_handle_t memh;
|
|
|
|
};
|
|
|
|
|
2005-07-01 15:52:50 +00:00
|
|
|
typedef int (*pccard_scan_t)(const struct pccard_tuple *, void *);
|
Add a much-requested feature: The ability for pccard attachments to
scan the CIS for interesting tuples. 95% of what can be obtained from
the CIS is harvested by the pccard layer and presented to the user in
standard function calls. However, there are special needs at times
where the standard stuff doesn't suffice. This is for those special
cases.
CARD_SCAN_CIS(device_get_parent(dev), function, argp)
scans the CIS of the card, passing each tuple to function with
the tuple and argp as its arguments. Returning 0 continues the scan,
while returning 1 terminates the scan. The value of the last
invocation of function is returned from this function.
int (*pccard_scan_t)(struct pccard_tuple *tuple, void *argp)
function called for each tuple. Elements of the CIS tuple can be
read with pccard_tuple_read_{1,2,3,4,n}(). You are reading
the actual tuple memory each time, in case your card has
registers in the CIS.
# I suppose these things should be documented in pccard(4) or something like
# that.
# I plan on unifying cardbus CIS support in a similar way.
Approved by: re (scottl)
2005-07-01 03:40:28 +00:00
|
|
|
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
struct pccard_product {
|
|
|
|
const char *pp_name; /* NULL if end of table */
|
2003-04-08 06:59:20 +00:00
|
|
|
#define PCCARD_VENDOR_ANY (0xffffffff)
|
|
|
|
uint32_t pp_vendor;
|
|
|
|
#define PCCARD_PRODUCT_ANY (0xffffffff)
|
|
|
|
uint32_t pp_product;
|
2001-01-21 08:09:00 +00:00
|
|
|
const char *pp_cis[4];
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
typedef int (*pccard_product_match_fn) (device_t dev,
|
|
|
|
const struct pccard_product *ent, int vpfmatch);
|
|
|
|
|
2002-07-17 05:20:43 +00:00
|
|
|
#include "card_if.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
* make this inline so that we don't have to worry about dangling references
|
|
|
|
* to it in the modules or the code.
|
|
|
|
*/
|
|
|
|
static __inline const struct pccard_product *
|
|
|
|
pccard_product_lookup(device_t dev, const struct pccard_product *tab,
|
|
|
|
size_t ent_size, pccard_product_match_fn matchfn)
|
|
|
|
{
|
|
|
|
return CARD_DO_PRODUCT_LOOKUP(device_get_parent(dev), dev,
|
|
|
|
tab, ent_size, matchfn);
|
|
|
|
}
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
|
1999-10-26 06:52:31 +00:00
|
|
|
#define pccard_cis_read_1(tuple, idx0) \
|
|
|
|
(bus_space_read_1((tuple)->memt, (tuple)->memh, (tuple)->mult*(idx0)))
|
|
|
|
|
|
|
|
#define pccard_tuple_read_1(tuple, idx1) \
|
|
|
|
(pccard_cis_read_1((tuple), ((tuple)->ptr+(2+(idx1)))))
|
|
|
|
|
|
|
|
#define pccard_tuple_read_2(tuple, idx2) \
|
2001-08-27 00:09:42 +00:00
|
|
|
(pccard_tuple_read_1((tuple), (idx2)) | \
|
1999-10-26 06:52:31 +00:00
|
|
|
(pccard_tuple_read_1((tuple), (idx2)+1)<<8))
|
|
|
|
|
|
|
|
#define pccard_tuple_read_3(tuple, idx3) \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx3)) | \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx3)+1)<<8) | \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx3)+2)<<16))
|
|
|
|
|
|
|
|
#define pccard_tuple_read_4(tuple, idx4) \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx4)) | \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx4)+1)<<8) | \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx4)+2)<<16) | \
|
|
|
|
(pccard_tuple_read_1((tuple), (idx4)+3)<<24))
|
|
|
|
|
|
|
|
#define pccard_tuple_read_n(tuple, n, idxn) \
|
|
|
|
(((n)==1)?pccard_tuple_read_1((tuple), (idxn)) : \
|
|
|
|
(((n)==2)?pccard_tuple_read_2((tuple), (idxn)) : \
|
|
|
|
(((n)==3)?pccard_tuple_read_3((tuple), (idxn)) : \
|
|
|
|
/* n == 4 */ pccard_tuple_read_4((tuple), (idxn)))))
|
|
|
|
|
|
|
|
#define PCCARD_SPACE_MEMORY 1
|
|
|
|
#define PCCARD_SPACE_IO 2
|
|
|
|
|
2003-10-06 07:17:20 +00:00
|
|
|
#define pccard_mfc(sc) \
|
|
|
|
(STAILQ_FIRST(&(sc)->card.pf_head) && \
|
1999-10-26 06:52:31 +00:00
|
|
|
STAILQ_NEXT(STAILQ_FIRST(&(sc)->card.pf_head),pf_list))
|
|
|
|
|
2005-09-13 17:56:36 +00:00
|
|
|
/* Convenience functions */
|
|
|
|
|
|
|
|
static __inline int
|
|
|
|
pccard_cis_scan(device_t dev, pccard_scan_t fct, void *arg)
|
|
|
|
{
|
|
|
|
return (CARD_CIS_SCAN(device_get_parent(dev), dev, fct, arg));
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline int
|
|
|
|
pccard_attr_read_1(device_t dev, uint32_t offset, uint8_t *val)
|
|
|
|
{
|
|
|
|
return (CARD_ATTR_READ(device_get_parent(dev), dev, offset, val));
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline int
|
|
|
|
pccard_attr_write_1(device_t dev, uint32_t offset, uint8_t val)
|
|
|
|
{
|
|
|
|
return (CARD_ATTR_WRITE(device_get_parent(dev), dev, offset, val));
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline int
|
|
|
|
pccard_ccr_read_1(device_t dev, uint32_t offset, uint8_t *val)
|
|
|
|
{
|
|
|
|
return (CARD_CCR_READ(device_get_parent(dev), dev, offset, val));
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline int
|
|
|
|
pccard_ccr_write_1(device_t dev, uint32_t offset, uint8_t val)
|
|
|
|
{
|
|
|
|
return (CARD_CCR_WRITE(device_get_parent(dev), dev, offset, val));
|
|
|
|
}
|
|
|
|
|
2000-01-21 03:08:46 +00:00
|
|
|
/* ivar interface */
|
|
|
|
enum {
|
|
|
|
PCCARD_IVAR_ETHADDR, /* read ethernet address from CIS tupple */
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
PCCARD_IVAR_VENDOR,
|
|
|
|
PCCARD_IVAR_PRODUCT,
|
2002-02-20 14:30:46 +00:00
|
|
|
PCCARD_IVAR_PRODEXT,
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
PCCARD_IVAR_FUNCTION_NUMBER,
|
|
|
|
PCCARD_IVAR_VENDOR_STR, /* CIS string for "Manufacturer" */
|
|
|
|
PCCARD_IVAR_PRODUCT_STR,/* CIS strnig for "Product" */
|
2000-10-15 17:21:50 +00:00
|
|
|
PCCARD_IVAR_CIS3_STR,
|
2001-04-21 04:08:39 +00:00
|
|
|
PCCARD_IVAR_CIS4_STR,
|
|
|
|
PCCARD_IVAR_FUNCTION
|
2000-01-21 03:08:46 +00:00
|
|
|
};
|
|
|
|
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
#define PCCARD_ACCESSOR(A, B, T) \
|
|
|
|
__inline static int \
|
|
|
|
pccard_get_ ## A(device_t dev, T *t) \
|
|
|
|
{ \
|
2001-08-27 00:09:42 +00:00
|
|
|
return BUS_READ_IVAR(device_get_parent(dev), dev, \
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
PCCARD_IVAR_ ## B, (uintptr_t *) t); \
|
2000-03-26 07:01:52 +00:00
|
|
|
}
|
|
|
|
|
2003-04-08 06:59:20 +00:00
|
|
|
PCCARD_ACCESSOR(ether, ETHADDR, uint8_t)
|
|
|
|
PCCARD_ACCESSOR(vendor, VENDOR, uint32_t)
|
|
|
|
PCCARD_ACCESSOR(product, PRODUCT, uint32_t)
|
|
|
|
PCCARD_ACCESSOR(prodext, PRODEXT, uint16_t)
|
|
|
|
PCCARD_ACCESSOR(function_number,FUNCTION_NUMBER, uint32_t)
|
|
|
|
PCCARD_ACCESSOR(function, FUNCTION, uint32_t)
|
2003-10-26 00:51:40 +00:00
|
|
|
PCCARD_ACCESSOR(vendor_str, VENDOR_STR, const char *)
|
|
|
|
PCCARD_ACCESSOR(product_str, PRODUCT_STR, const char *)
|
|
|
|
PCCARD_ACCESSOR(cis3_str, CIS3_STR, const char *)
|
|
|
|
PCCARD_ACCESSOR(cis4_str, CIS4_STR, const char *)
|
o Merge in changes to the NetBSD sources:
pcmciavar.h 1.9->1.12
1.12, enami, minor coding nits
1.11, augustss, (pcmcia_devinfo NRFB)
1.10, cgd, add generic lookup routines
pcmcia.c 1.14->1.23
1.23, drochner, (probe code printing, NRFB)
1.22, augustss, KNF
1.21, uch, (hpcmips tweaks NRFB)
1.20, chopps, remove bogus debug
1.19, enami, minor coding nits
1.18, augustss, (pcmcia_devinfo NRFB)
1.17, nathanw, LP64 printf fixes
1.16, cgd, add generic lookup routines
1.15, aymeric, printf fixes
NRFB == not relevant to freebsd
o Expand the pccard matching routines to include the ability to match
against the CIS strings since our current driver database is based on
that.
o Add lots more ivars to get the information necessary to snag these values.
2000-09-22 01:15:26 +00:00
|
|
|
|
2001-05-08 23:56:47 +00:00
|
|
|
/* shared memory flags */
|
2000-03-26 07:01:52 +00:00
|
|
|
enum {
|
2001-05-08 23:56:47 +00:00
|
|
|
PCCARD_A_MEM_COM, /* common */
|
|
|
|
PCCARD_A_MEM_ATTR, /* attribute */
|
|
|
|
PCCARD_A_MEM_8BIT, /* 8 bit */
|
|
|
|
PCCARD_A_MEM_16BIT /* 16 bit */
|
2000-03-26 07:01:52 +00:00
|
|
|
};
|
|
|
|
|
2001-11-15 06:37:13 +00:00
|
|
|
#define PCCARD_S(a, b) PCMCIA_STR_ ## a ## _ ## b
|
|
|
|
#define PCCARD_P(a, b) PCMCIA_PRODUCT_ ## a ## _ ## b
|
|
|
|
#define PCCARD_C(a, b) PCMCIA_CIS_ ## a ## _ ## b
|
2005-06-24 14:36:54 +00:00
|
|
|
#if PCCARD_API_LEVEL >= 6
|
|
|
|
#define PCMCIA_CARD_D(v, p) { PCCARD_S(v, p), PCMCIA_VENDOR_ ## v, \
|
|
|
|
PCCARD_P(v, p), PCCARD_C(v, p) }
|
|
|
|
#define PCMCIA_CARD2_D(v1, p1, p2) \
|
|
|
|
{ PCMCIA_STR_ ## p2, PCMCIA_VENDOR_ ## v1, PCCARD_P(v1, p1), \
|
|
|
|
PCMCIA_CIS_ ## p2}
|
|
|
|
#define PCMCIA_CARD(v, p) { NULL, PCMCIA_VENDOR_ ## v, \
|
|
|
|
PCCARD_P(v, p), PCCARD_C(v, p) }
|
|
|
|
#define PCMCIA_CARD2(v1, p1, p2) \
|
|
|
|
{ NULL, PCMCIA_VENDOR_ ## v1, PCCARD_P(v1, p1), \
|
|
|
|
PCMCIA_CIS_ ## p2}
|
|
|
|
#else
|
2003-04-10 07:21:11 +00:00
|
|
|
#define PCMCIA_CARD_D(v, p, f) { PCCARD_S(v, p), PCMCIA_VENDOR_ ## v, \
|
2005-06-24 14:36:54 +00:00
|
|
|
PCCARD_P(v, p), PCCARD_C(v, p) }
|
2003-04-10 07:21:11 +00:00
|
|
|
#define PCMCIA_CARD2_D(v1, p1, p2, f) \
|
2001-11-15 06:37:13 +00:00
|
|
|
{ PCMCIA_STR_ ## p2, PCMCIA_VENDOR_ ## v1, PCCARD_P(v1, p1), \
|
2005-06-24 14:36:54 +00:00
|
|
|
PCMCIA_CIS_ ## p2}
|
2003-04-10 07:21:11 +00:00
|
|
|
#define PCMCIA_CARD(v, p, f) { NULL, PCMCIA_VENDOR_ ## v, \
|
2005-06-24 14:36:54 +00:00
|
|
|
PCCARD_P(v, p), PCCARD_C(v, p) }
|
2003-04-10 07:21:11 +00:00
|
|
|
#define PCMCIA_CARD2(v1, p1, p2, f) \
|
2003-04-08 15:28:58 +00:00
|
|
|
{ NULL, PCMCIA_VENDOR_ ## v1, PCCARD_P(v1, p1), \
|
2005-06-24 14:36:54 +00:00
|
|
|
PCMCIA_CIS_ ## p2}
|
|
|
|
#endif
|