|
|
1.1 ! root 1: #ifndef _UNDI_H ! 2: #define _UNDI_H ! 3: ! 4: /** @file ! 5: * ! 6: * UNDI driver ! 7: * ! 8: */ ! 9: ! 10: FILE_LICENCE ( GPL2_OR_LATER ); ! 11: ! 12: #ifndef ASSEMBLY ! 13: ! 14: #include <ipxe/device.h> ! 15: #include <pxe_types.h> ! 16: ! 17: /** An UNDI device ! 18: * ! 19: * This structure is used by assembly code as well as C; do not alter ! 20: * this structure without editing pxeprefix.S to match. ! 21: */ ! 22: struct undi_device { ! 23: /** PXENV+ structure address */ ! 24: SEGOFF16_t pxenv; ! 25: /** !PXE structure address */ ! 26: SEGOFF16_t ppxe; ! 27: /** Entry point */ ! 28: SEGOFF16_t entry; ! 29: /** Free base memory after load */ ! 30: UINT16_t fbms; ! 31: /** Free base memory prior to load */ ! 32: UINT16_t restore_fbms; ! 33: /** PCI bus:dev.fn, or @c UNDI_NO_PCI_BUSDEVFN */ ! 34: UINT16_t pci_busdevfn; ! 35: /** ISAPnP card select number, or @c UNDI_NO_ISAPNP_CSN */ ! 36: UINT16_t isapnp_csn; ! 37: /** ISAPnP read port, or @c UNDI_NO_ISAPNP_READ_PORT */ ! 38: UINT16_t isapnp_read_port; ! 39: /** PCI vendor ID ! 40: * ! 41: * Filled in only for the preloaded UNDI device by pxeprefix.S ! 42: */ ! 43: UINT16_t pci_vendor; ! 44: /** PCI device ID ! 45: * ! 46: * Filled in only for the preloaded UNDI device by pxeprefix.S ! 47: */ ! 48: UINT16_t pci_device; ! 49: /** Flags ! 50: * ! 51: * This is the bitwise OR of zero or more UNDI_FL_XXX ! 52: * constants. ! 53: */ ! 54: UINT16_t flags; ! 55: ! 56: /** Generic device */ ! 57: struct device dev; ! 58: /** Driver-private data ! 59: * ! 60: * Use undi_set_drvdata() and undi_get_drvdata() to access this ! 61: * field. ! 62: */ ! 63: void *priv; ! 64: } __attribute__ (( packed )); ! 65: ! 66: /** ! 67: * Set UNDI driver-private data ! 68: * ! 69: * @v undi UNDI device ! 70: * @v priv Private data ! 71: */ ! 72: static inline void undi_set_drvdata ( struct undi_device *undi, void *priv ) { ! 73: undi->priv = priv; ! 74: } ! 75: ! 76: /** ! 77: * Get UNDI driver-private data ! 78: * ! 79: * @v undi UNDI device ! 80: * @ret priv Private data ! 81: */ ! 82: static inline void * undi_get_drvdata ( struct undi_device *undi ) { ! 83: return undi->priv; ! 84: } ! 85: ! 86: #endif /* ASSEMBLY */ ! 87: ! 88: /** PCI bus:dev.fn field is invalid */ ! 89: #define UNDI_NO_PCI_BUSDEVFN 0xffff ! 90: ! 91: /** ISAPnP card select number field is invalid */ ! 92: #define UNDI_NO_ISAPNP_CSN 0xffff ! 93: ! 94: /** ISAPnP read port field is invalid */ ! 95: #define UNDI_NO_ISAPNP_READ_PORT 0xffff ! 96: ! 97: /** UNDI flag: START_UNDI has been called */ ! 98: #define UNDI_FL_STARTED 0x0001 ! 99: ! 100: /** UNDI flag: UNDI_STARTUP and UNDI_INITIALIZE have been called */ ! 101: #define UNDI_FL_INITIALIZED 0x0002 ! 102: ! 103: /** UNDI flag: keep stack resident */ ! 104: #define UNDI_FL_KEEP_ALL 0x0004 ! 105: ! 106: #endif /* _UNDI_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.