summaryrefslogtreecommitdiff
path: root/gpxe/src/drivers/bus/isa.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2016-02-09 18:08:47 -0800
committerH. Peter Anvin <hpa@zytor.com>2016-02-09 18:08:47 -0800
commitf2f897a1762fab84d2905f32b1c15dd7b42abb56 (patch)
treea38f51d3f1fcbf44afddb4736d549c12eaf491be /gpxe/src/drivers/bus/isa.c
parent72d2959272b4616f17a97667e6dfa9d06bf109a3 (diff)
downloadsyslinux-f2f897a1762fab84d2905f32b1c15dd7b42abb56.tar.gz
gpxe: delete long since obsolete snapshot of gPXE
gPXE has been deprecated in favor of iPXE for many, many years now. It is much better than users get it directly from the iPXE project, since we should no longer need any special modifications for Syslinux use. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'gpxe/src/drivers/bus/isa.c')
-rw-r--r--gpxe/src/drivers/bus/isa.c172
1 files changed, 0 insertions, 172 deletions
diff --git a/gpxe/src/drivers/bus/isa.c b/gpxe/src/drivers/bus/isa.c
deleted file mode 100644
index f458826d..00000000
--- a/gpxe/src/drivers/bus/isa.c
+++ /dev/null
@@ -1,172 +0,0 @@
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <gpxe/io.h>
-#include <gpxe/isa.h>
-
-FILE_LICENCE ( GPL2_OR_LATER );
-
-/*
- * isa.c implements a "classical" port-scanning method of ISA device
- * detection. The driver must provide a list of probe addresses
- * (probe_addrs), together with a function (probe_addr) that can be
- * used to test for the physical presence of a device at any given
- * address.
- *
- * Note that this should probably be considered the "last resort" for
- * device probing. If the card supports ISAPnP or EISA, use that
- * instead. Some cards (e.g. the 3c509) implement a proprietary
- * ISAPnP-like mechanism.
- *
- * The ISA probe address list can be overridden by config.h; if the
- * user specifies ISA_PROBE_ADDRS then that list will be used first.
- * (If ISA_PROBE_ONLY is defined, the driver's own list will never be
- * used).
- */
-
-/*
- * User-supplied probe address list
- *
- */
-static isa_probe_addr_t isa_extra_probe_addrs[] = {
-#ifdef ISA_PROBE_ADDRS
- ISA_PROBE_ADDRS
-#endif
-};
-#define ISA_EXTRA_PROBE_ADDR_COUNT \
- ( sizeof ( isa_extra_probe_addrs ) / sizeof ( isa_extra_probe_addrs[0] ) )
-
-#define ISA_IOIDX_MIN( driver ) ( -ISA_EXTRA_PROBE_ADDR_COUNT )
-#ifdef ISA_PROBE_ONLY
-#define ISA_IOIDX_MAX( driver ) ( -1 )
-#else
-#define ISA_IOIDX_MAX( driver ) ( (int) (driver)->addr_count - 1 )
-#endif
-
-#define ISA_IOADDR( driver, ioidx ) \
- ( ( (ioidx) < 0 ) ? \
- isa_extra_probe_addrs[ (ioidx) + ISA_EXTRA_PROBE_ADDR_COUNT ] : \
- (driver)->probe_addrs[(ioidx)] )
-
-static void isabus_remove ( struct root_device *rootdev );
-
-/**
- * Probe an ISA device
- *
- * @v isa ISA device
- * @ret rc Return status code
- */
-static int isa_probe ( struct isa_device *isa ) {
- int rc;
-
- DBG ( "Trying ISA driver %s at I/O %04x\n",
- isa->driver->name, isa->ioaddr );
-
- if ( ( rc = isa->driver->probe ( isa ) ) != 0 ) {
- DBG ( "...probe failed\n" );
- return rc;
- }
-
- DBG ( "...device found\n" );
- return 0;
-}
-
-/**
- * Remove an ISA device
- *
- * @v isa ISA device
- */
-static void isa_remove ( struct isa_device *isa ) {
- isa->driver->remove ( isa );
- DBG ( "Removed ISA%04x\n", isa->ioaddr );
-}
-
-/**
- * Probe ISA root bus
- *
- * @v rootdev ISA bus root device
- *
- * Scans the ISA bus for devices and registers all devices it can
- * find.
- */
-static int isabus_probe ( struct root_device *rootdev ) {
- struct isa_device *isa = NULL;
- struct isa_driver *driver;
- int ioidx;
- int rc;
-
- for_each_table_entry ( driver, ISA_DRIVERS ) {
- for ( ioidx = ISA_IOIDX_MIN ( driver ) ;
- ioidx <= ISA_IOIDX_MAX ( driver ) ; ioidx++ ) {
- /* Allocate struct isa_device */
- if ( ! isa )
- isa = malloc ( sizeof ( *isa ) );
- if ( ! isa ) {
- rc = -ENOMEM;
- goto err;
- }
- memset ( isa, 0, sizeof ( *isa ) );
- isa->driver = driver;
- isa->ioaddr = ISA_IOADDR ( driver, ioidx );
-
- /* Add to device hierarchy */
- snprintf ( isa->dev.name, sizeof ( isa->dev.name ),
- "ISA%04x", isa->ioaddr );
- isa->dev.desc.bus_type = BUS_TYPE_ISA;
- isa->dev.desc.vendor = driver->vendor_id;
- isa->dev.desc.device = driver->prod_id;
- isa->dev.parent = &rootdev->dev;
- list_add ( &isa->dev.siblings,
- &rootdev->dev.children );
- INIT_LIST_HEAD ( &isa->dev.children );
-
- /* Try probing at this I/O address */
- if ( isa_probe ( isa ) == 0 ) {
- /* isadev registered, we can drop our ref */
- isa = NULL;
- } else {
- /* Not registered; re-use struct */
- list_del ( &isa->dev.siblings );
- }
- }
- }
-
- free ( isa );
- return 0;
-
- err:
- free ( isa );
- isabus_remove ( rootdev );
- return rc;
-}
-
-/**
- * Remove ISA root bus
- *
- * @v rootdev ISA bus root device
- */
-static void isabus_remove ( struct root_device *rootdev ) {
- struct isa_device *isa;
- struct isa_device *tmp;
-
- list_for_each_entry_safe ( isa, tmp, &rootdev->dev.children,
- dev.siblings ) {
- isa_remove ( isa );
- list_del ( &isa->dev.siblings );
- free ( isa );
- }
-}
-
-/** ISA bus root device driver */
-static struct root_driver isa_root_driver = {
- .probe = isabus_probe,
- .remove = isabus_remove,
-};
-
-/** ISA bus root device */
-struct root_device isa_root_device __root_device = {
- .dev = { .name = "ISA" },
- .driver = &isa_root_driver,
-};