From 8406115834d38bb743e01f35bfd36e835532415e Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 19 Apr 2010 20:16:01 +0100 Subject: [build] Rename gPXE to iPXE Access to the gpxe.org and etherboot.org domains and associated resources has been revoked by the registrant of the domain. Work around this problem by renaming project from gPXE to iPXE, and updating URLs to match. Also update README, LOG and COPYRIGHTS to remove obsolete information. Signed-off-by: Michael Brown --- src/include/ipxe/device.h | 113 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/include/ipxe/device.h (limited to 'src/include/ipxe/device.h') diff --git a/src/include/ipxe/device.h b/src/include/ipxe/device.h new file mode 100644 index 000000000..856753000 --- /dev/null +++ b/src/include/ipxe/device.h @@ -0,0 +1,113 @@ +#ifndef _IPXE_DEVICE_H +#define _IPXE_DEVICE_H + +/** + * @file + * + * Device model + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include +#include + +/** A hardware device description */ +struct device_description { + /** Bus type + * + * This must be a BUS_TYPE_XXX constant. + */ + unsigned int bus_type; + /** Location + * + * The interpretation of this field is bus-type-specific. + */ + unsigned int location; + /** Vendor ID */ + unsigned int vendor; + /** Device ID */ + unsigned int device; + /** Device class */ + unsigned long class; + /** I/O address */ + unsigned long ioaddr; + /** IRQ */ + unsigned int irq; +}; + +/** PCI bus type */ +#define BUS_TYPE_PCI 1 + +/** ISAPnP bus type */ +#define BUS_TYPE_ISAPNP 2 + +/** EISA bus type */ +#define BUS_TYPE_EISA 3 + +/** MCA bus type */ +#define BUS_TYPE_MCA 4 + +/** ISA bus type */ +#define BUS_TYPE_ISA 5 + +/** A hardware device */ +struct device { + /** Name */ + char name[16]; + /** Device description */ + struct device_description desc; + /** Devices on the same bus */ + struct list_head siblings; + /** Devices attached to this device */ + struct list_head children; + /** Bus device */ + struct device *parent; +}; + +/** + * A root device + * + * Root devices are system buses such as PCI, EISA, etc. + * + */ +struct root_device { + /** Device chain + * + * A root device has a NULL parent field. + */ + struct device dev; + /** Root device driver */ + struct root_driver *driver; +}; + +/** A root device driver */ +struct root_driver { + /** + * Add root device + * + * @v rootdev Root device + * @ret rc Return status code + * + * Called from probe_devices() for all root devices in the build. + */ + int ( * probe ) ( struct root_device *rootdev ); + /** + * Remove root device + * + * @v rootdev Root device + * + * Called from remove_device() for all successfully-probed + * root devices. + */ + void ( * remove ) ( struct root_device *rootdev ); +}; + +/** Root device table */ +#define ROOT_DEVICES __table ( struct root_device, "root_devices" ) + +/** Declare a root device */ +#define __root_device __table_entry ( ROOT_DEVICES, 01 ) + +#endif /* _IPXE_DEVICE_H */ -- cgit