FreeBSD kernel PCCARD device code
|
#include "card_if.h"
Go to the source code of this file.
Data Structures | |
struct | pccard_io_handle |
struct | pccard_mem_handle |
struct | pccard_tuple |
struct | pccard_product |
Macros | |
#define | PCCARD_IO_ALLOCATED 0x01 /* i/o space was allocated */ |
#define | PCCARD_MEM_16BIT 1 /* 1 -> 16bit 0 -> 8bit */ |
#define | PCCARD_MEM_ATTR 2 /* 1 -> attribute mem 0 -> common */ |
#define | PCCARD_WIDTH_AUTO 0 |
#define | PCCARD_WIDTH_IO8 1 |
#define | PCCARD_WIDTH_IO16 2 |
#define | PCCARD_VENDOR_ANY (0xffffffff) |
#define | PCCARD_PRODUCT_ANY (0xffffffff) |
#define | PCCARD_PNP_DESCR "D:#;V32:manufacturer;V32:product;Z:cisvendor;Z:cisproduct;" |
#define | PCCARD_PNP_INFO(t) MODULE_PNP_INFO(PCCARD_PNP_DESCR, pccard, t, t, nitems(t) - 1) |
#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) |
#define | pccard_tuple_read_3(tuple, idx3) |
#define | pccard_tuple_read_4(tuple, idx4) |
#define | pccard_tuple_read_n(tuple, n, idxn) |
#define | PCCARD_SPACE_MEMORY 1 |
#define | PCCARD_SPACE_IO 2 |
#define | pccard_mfc(sc) |
#define | PCCARD_ACCESSOR(A, B, T) |
#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 |
#define | PCMCIA_CARD_D(v, p) |
#define | PCMCIA_CARD(v, p) |
#define | PFD_I_V_MASK 0x3 |
#define | PFD_I_V_NONE_REQUIRED 0x0 |
#define | PFD_I_V_REQ_MOD_ACC 0x1 |
#define | PFD_I_V_REQ_ACC 0x2 |
#define | PFD_I_V_REQ_ALWYS 0x1 |
#define | PFD_I_S 0x4 /* 0 rotating, 1 silicon */ |
#define | PFD_I_U 0x8 /* SN Uniq? */ |
#define | PFD_I_D 0x10 /* 0 - 1 drive, 1 - 2 drives */ |
#define | PFD_P_P0 0x100 |
#define | PFD_P_P1 0x200 |
#define | PFD_P_P2 0x400 |
#define | PFD_P_P3 0x800 |
#define | PFD_P_N 0x1000 /* 3f7/377 excluded? */ |
#define | PFD_P_E 0x2000 /* Index bit supported? */ |
#define | PFD_P_I 0x4000 /* twincard */ |
Typedefs | |
typedef int(* | pccard_scan_t) (const struct pccard_tuple *, void *) |
typedef int(* | pccard_product_match_fn) (device_t dev, const struct pccard_product *ent, int vpfmatch) |
Functions | |
static const struct pccard_product * | pccard_product_lookup (device_t dev, const struct pccard_product *tab, size_t ent_size, pccard_product_match_fn matchfn) |
static int | pccard_cis_scan (device_t dev, pccard_scan_t fct, void *arg) |
static int | pccard_attr_read_1 (device_t dev, uint32_t offset, uint8_t *val) |
static int | pccard_attr_write_1 (device_t dev, uint32_t offset, uint8_t val) |
static int | pccard_ccr_read_1 (device_t dev, uint32_t offset, uint8_t *val) |
static int | pccard_ccr_write_1 (device_t dev, uint32_t offset, uint8_t val) |
int | pccard_select_cfe (device_t dev, int entry) |
#define PCCARD_ACCESSOR | ( | A, | |
B, | |||
T | |||
) |
Definition at line 208 of file pccardvar.h.
#define PCCARD_C | ( | a, | |
b | |||
) | PCMCIA_CIS_ ## a ## _ ## b |
Definition at line 238 of file pccardvar.h.
#define pccard_cis_read_1 | ( | tuple, | |
idx0 | |||
) | (bus_space_read_1((tuple)->memt, (tuple)->memh, (tuple)->mult*(idx0))) |
Definition at line 124 of file pccardvar.h.
#define PCCARD_IO_ALLOCATED 0x01 /* i/o space was allocated */ |
Definition at line 47 of file pccardvar.h.
#define PCCARD_MEM_16BIT 1 /* 1 -> 16bit 0 -> 8bit */ |
Definition at line 63 of file pccardvar.h.
#define PCCARD_MEM_ATTR 2 /* 1 -> attribute mem 0 -> common */ |
Definition at line 64 of file pccardvar.h.
#define pccard_mfc | ( | sc | ) |
Definition at line 154 of file pccardvar.h.
#define PCCARD_P | ( | a, | |
b | |||
) | PCMCIA_PRODUCT_ ## a ## _ ## b |
Definition at line 237 of file pccardvar.h.
#define PCCARD_PNP_DESCR "D:#;V32:manufacturer;V32:product;Z:cisvendor;Z:cisproduct;" |
Note: There's no cis3 or cis4 reported for NOMATCH / pnpinfo events for pccard. It's unclear if we actually need that for automatic loading or not. These strings are informative, according to the standard. Some Linux drivers match on them, for example. However, FreeBSD's hardware probing is a little different than Linux, so it turns out we don't need them. Some cards use CIS3 or CIS4 for a textual representation of the MAC address. In short, belief that all the entries in Linux don't actually need to be separate there either, but they persist since it's hard to eliminate them and retest on old, possibly rare, hardware. Despite years of collecting ~300 different PC Cards off E-Bay, I've not been able to find any that need CIS3/CIS4 to select which device attaches.
Definition at line 103 of file pccardvar.h.
#define PCCARD_PNP_INFO | ( | t | ) | MODULE_PNP_INFO(PCCARD_PNP_DESCR, pccard, t, t, nitems(t) - 1) |
Definition at line 104 of file pccardvar.h.
#define PCCARD_PRODUCT_ANY (0xffffffff) |
Definition at line 85 of file pccardvar.h.
#define PCCARD_S | ( | a, | |
b | |||
) | PCMCIA_STR_ ## a ## _ ## b |
Definition at line 236 of file pccardvar.h.
#define PCCARD_SPACE_IO 2 |
Definition at line 152 of file pccardvar.h.
#define PCCARD_SPACE_MEMORY 1 |
Definition at line 151 of file pccardvar.h.
#define pccard_tuple_read_1 | ( | tuple, | |
idx1 | |||
) | (pccard_cis_read_1((tuple), ((tuple)->ptr+(2+(idx1))))) |
Definition at line 127 of file pccardvar.h.
#define pccard_tuple_read_2 | ( | tuple, | |
idx2 | |||
) |
Definition at line 130 of file pccardvar.h.
#define pccard_tuple_read_3 | ( | tuple, | |
idx3 | |||
) |
Definition at line 134 of file pccardvar.h.
#define pccard_tuple_read_4 | ( | tuple, | |
idx4 | |||
) |
Definition at line 139 of file pccardvar.h.
#define pccard_tuple_read_n | ( | tuple, | |
n, | |||
idxn | |||
) |
Definition at line 145 of file pccardvar.h.
#define PCCARD_VENDOR_ANY (0xffffffff) |
Definition at line 83 of file pccardvar.h.
#define PCCARD_WIDTH_AUTO 0 |
Definition at line 66 of file pccardvar.h.
#define PCCARD_WIDTH_IO16 2 |
Definition at line 68 of file pccardvar.h.
#define PCCARD_WIDTH_IO8 1 |
Definition at line 67 of file pccardvar.h.
#define PCMCIA_CARD | ( | v, | |
p | |||
) |
Definition at line 241 of file pccardvar.h.
#define PCMCIA_CARD_D | ( | v, | |
p | |||
) |
Definition at line 239 of file pccardvar.h.
#define PFD_I_D 0x10 /* 0 - 1 drive, 1 - 2 drives */ |
Definition at line 255 of file pccardvar.h.
#define PFD_I_S 0x4 /* 0 rotating, 1 silicon */ |
Definition at line 253 of file pccardvar.h.
#define PFD_I_U 0x8 /* SN Uniq? */ |
Definition at line 254 of file pccardvar.h.
#define PFD_I_V_MASK 0x3 |
Definition at line 248 of file pccardvar.h.
#define PFD_I_V_NONE_REQUIRED 0x0 |
Definition at line 249 of file pccardvar.h.
#define PFD_I_V_REQ_ACC 0x2 |
Definition at line 251 of file pccardvar.h.
#define PFD_I_V_REQ_ALWYS 0x1 |
Definition at line 252 of file pccardvar.h.
#define PFD_I_V_REQ_MOD_ACC 0x1 |
Definition at line 250 of file pccardvar.h.
#define PFD_P_E 0x2000 /* Index bit supported? */ |
Definition at line 261 of file pccardvar.h.
#define PFD_P_I 0x4000 /* twincard */ |
Definition at line 262 of file pccardvar.h.
#define PFD_P_N 0x1000 /* 3f7/377 excluded? */ |
Definition at line 260 of file pccardvar.h.
#define PFD_P_P0 0x100 |
Definition at line 256 of file pccardvar.h.
#define PFD_P_P1 0x200 |
Definition at line 257 of file pccardvar.h.
#define PFD_P_P2 0x400 |
Definition at line 258 of file pccardvar.h.
#define PFD_P_P3 0x800 |
Definition at line 259 of file pccardvar.h.
typedef int(* pccard_product_match_fn) (device_t dev, const struct pccard_product *ent, int vpfmatch) |
Definition at line 107 of file pccardvar.h.
typedef int(* pccard_scan_t) (const struct pccard_tuple *, void *) |
Definition at line 79 of file pccardvar.h.
anonymous enum |
Definition at line 194 of file pccardvar.h.
anonymous enum |
Enumerator | |
---|---|
PCCARD_A_MEM_COM | |
PCCARD_A_MEM_ATTR | |
PCCARD_A_MEM_8BIT | |
PCCARD_A_MEM_16BIT |
Definition at line 229 of file pccardvar.h.
|
inlinestatic |
Definition at line 167 of file pccardvar.h.
|
inlinestatic |
Definition at line 173 of file pccardvar.h.
|
inlinestatic |
Definition at line 179 of file pccardvar.h.
|
inlinestatic |
Definition at line 185 of file pccardvar.h.
|
inlinestatic |
Definition at line 161 of file pccardvar.h.
|
inlinestatic |
Definition at line 117 of file pccardvar.h.
int pccard_select_cfe | ( | device_t | dev, |
int | entry | ||
) |