176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _UNDIROM_H
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _UNDIROM_H
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** @file
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * UNDI expansion ROMs
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman *
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER );
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <pxe_types.h>
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** An UNDI PCI device ID */
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct undi_pci_device_id {
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** PCI vendor ID */
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned int vendor_id;
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** PCI device ID */
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned int device_id;
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** An UNDI device ID */
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanunion undi_device_id {
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** PCI device ID */
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	struct undi_pci_device_id pci;
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** An UNDI ROM */
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct undi_rom {
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** List of UNDI ROMs */
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	struct list_head list;
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** ROM segment address */
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned int rom_segment;
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** UNDI loader entry point */
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	SEGOFF16_t loader_entry;
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** Code segment size */
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	size_t code_size;
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** Data segment size */
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	size_t data_size;
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** Bus type
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	 *
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	 * Values are as used by @c PXENV_UNDI_GET_NIC_TYPE
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	 */
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	unsigned int bus_type;
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	/** Device ID */
4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman	union undi_device_id bus_id;
4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman};
4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern struct undi_rom * undirom_find_pci ( unsigned int vendor_id,
5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman					    unsigned int device_id,
5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman					    unsigned int rombase );
5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif /* _UNDIROM_H */
54