Created a bus/device API that allows for the ROM prefix to specify an
[people/lynusvaz/gpxe.git] / src / arch / i386 / prefix / select_isapnp.c
1 #include "dev.h"
2 #include "isapnp.h"
3 #include "registers.h"
4
5 /*
6  * Register a device as the default ISAPnP boot device.  This code is
7  * called by the ISAPnP ROM prefix.
8  *
9  * Do not move this code to drivers/bus/isapnp.c, because it is
10  * i386-specific, and don't merge it with select_pci.c, because that
11  * would cause linker symbol pollution.
12  *
13  */
14 void i386_select_isapnp_device ( struct i386_all_regs *regs ) {
15         /*
16          * PnP BIOS passes card select number in %bx and read port
17          * address in %dx.
18          *
19          */
20         union {
21                 struct bus_loc bus_loc;
22                 struct isapnp_loc isapnp_loc;
23         } u;
24
25         /* Set ISAPnP read port */
26         isapnp_set_read_port ( regs->dx );
27         
28         /* Select ISAPnP bus and specified CSN as first boot device */
29         memset ( &u, 0, sizeof ( u ) );
30         u.isapnp_loc.csn = regs->bx;
31         select_device ( &dev, &isapnp_driver, &u.bus_loc );
32 }