#ifndef _UNDI_H
#define _UNDI_H

/** @file
 *
 * UNDI driver
 *
 */

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

#ifndef ASSEMBLY

#include <ipxe/device.h>
#include <pxe_types.h>

/** An UNDI device
 *
 * This structure is used by assembly code as well as C; do not alter
 * this structure without editing pxeprefix.S to match.
 */
struct undi_device {
	/** PXENV+ structure address */
	SEGOFF16_t pxenv;
	/** !PXE structure address */
	SEGOFF16_t ppxe;
	/** Entry point */
	SEGOFF16_t entry;
	/** Free base memory after load */
	UINT16_t fbms;
	/** Free base memory prior to load */
	UINT16_t restore_fbms;
	/** PCI bus:dev.fn, or @c UNDI_NO_PCI_BUSDEVFN */
	UINT16_t pci_busdevfn;
	/** ISAPnP card select number, or @c UNDI_NO_ISAPNP_CSN */
	UINT16_t isapnp_csn;
	/** ISAPnP read port, or @c UNDI_NO_ISAPNP_READ_PORT */
	UINT16_t isapnp_read_port;
	/** PCI vendor ID
	 *
	 * Filled in only for the preloaded UNDI device by pxeprefix.S
	 */
	UINT16_t pci_vendor;
	/** PCI device ID 
	 *
	 * Filled in only for the preloaded UNDI device by pxeprefix.S
	 */
	UINT16_t pci_device;
	/** Flags
	 *
	 * This is the bitwise OR of zero or more UNDI_FL_XXX
	 * constants.
	 */
	UINT16_t flags;

	/** Driver-private data
	 *
	 * Use undi_set_drvdata() and undi_get_drvdata() to access this
	 * field.
	 */
	void *priv;
} __attribute__ (( packed ));

/**
 * Set UNDI driver-private data
 *
 * @v undi		UNDI device
 * @v priv		Private data
 */
static inline void undi_set_drvdata ( struct undi_device *undi, void *priv ) {
	undi->priv = priv;
}

/**
 * Get UNDI driver-private data
 *
 * @v undi		UNDI device
 * @ret priv		Private data
 */
static inline void * undi_get_drvdata ( struct undi_device *undi ) {
	return undi->priv;
}

#endif /* ASSEMBLY */

/** PCI bus:dev.fn field is invalid */
#define UNDI_NO_PCI_BUSDEVFN 0xffff

/** ISAPnP card select number field is invalid */
#define UNDI_NO_ISAPNP_CSN 0xffff

/** ISAPnP read port field is invalid */
#define UNDI_NO_ISAPNP_READ_PORT 0xffff

/** UNDI flag: START_UNDI has been called */
#define UNDI_FL_STARTED 0x0001

/** UNDI flag: UNDI_STARTUP and UNDI_INITIALIZE have been called */
#define UNDI_FL_INITIALIZED 0x0002

/** UNDI flag: keep stack resident */
#define UNDI_FL_KEEP_ALL 0x0004

#endif /* _UNDI_H */
