Obsoleted by drivers/net/undionly.c
authorMichael Brown <mcb30@etherboot.org>
Tue, 9 Jan 2007 03:22:11 +0000 (03:22 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 9 Jan 2007 03:22:11 +0000 (03:22 +0000)
src/arch/i386/drivers/bus/pxebus.c [deleted file]

diff --git a/src/arch/i386/drivers/bus/pxebus.c b/src/arch/i386/drivers/bus/pxebus.c
deleted file mode 100644 (file)
index 4876fa2..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-#if 0
-
-/*
- * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <pxe.h>
-#include <realmode.h>
-#include <bios.h>
-#include <pnpbios.h>
-#include <gpxe/device.h>
-#include <gpxe/pci.h>
-
-/** @file
- *
- * PXE bus
- *
- */
-
-/**
- * Byte checksum
- *
- * @v data             Data to checksum
- * @v len              Length of data
- * @ret sum            Byte checksum
- */
-static uint8_t checksum ( void *data, size_t len ) {
-       uint8_t *bytes = data;
-       unsigned int sum = 0;
-
-       while ( len-- )
-               sum += *(bytes++);
-
-       return sum;
-}
-
-/**
- * Unregister a PXE device
- *
- * @v pxe              PXE device
- *
- */
-static void unregister_pxedev ( struct pxe_device *pxe ) {
-       undi_remove ( pxe );
-       list_del ( &pxe->dev.siblings );
-       DBGC ( pxe, "PXE %p unregistered\n", pxe );
-}
-
-static void pxebus_remove ( struct root_device *rootdev );
-
-/**
- * Probe PXE root bus
- *
- * @v rootdev          PXE bus root device
- *
- * Scans the PXE bus for devices and registers all devices it can
- * find.
- */
-static int pxebus_probe ( struct root_device *rootdev ) {
-       struct pxe_device *pxe = NULL;
-       struct s_PXENV pxenv;
-       struct s_PXE ppxe;
-       uint16_t fbms;
-       unsigned int segment;
-       unsigned int undi_cs;
-       int rc;
-
-       /* Scan through allocated base memory for PXENV+ structure */
-       get_real ( fbms, BDA_SEG, BDA_FBMS );
-       for ( segment = ( fbms << 6 ) ; segment < 0xa000 ; segment++ ) {
-
-               /* Verify PXENV+ signature and checksum */
-               copy_from_real ( &pxenv, segment, 0, sizeof ( pxenv ) );
-               if ( memcmp ( pxenv.Signature, "PXENV+", 6 ) != 0 )
-                       continue;
-               DBG ( "Found PXENV+ signature at %04x0\n", segment );
-               if ( checksum ( &pxenv, sizeof ( pxenv ) ) != 0 ) {
-                       DBG ( "...bad checksum\n" );
-                       continue;
-               }
-
-               /* Allocate PXE device structure */
-               pxe = malloc ( sizeof ( *pxe ) );
-               if ( ! pxe ) {
-                       rc = -ENOMEM;
-                       goto err;
-               }
-               memset ( pxe, 0, sizeof ( *pxe ) );
-
-               /* Add to device hierarchy */
-               pxe->dev.parent = &rootdev->dev;
-               INIT_LIST_HEAD ( &pxe->dev.children );
-               list_add ( &pxe->dev.siblings, &rootdev->dev.children );
-
-               /* Populate PXE device structure */
-               undi_cs = pxenv.UNDICodeSeg;
-               pxe->pxenv.segment = undi_cs;
-               pxe->pxenv.offset = ( ( segment - undi_cs ) << 4 );
-               DBGC ( pxe, "PXE %p has PXENV+ structure at %04x:%04x\n",
-                      pxe, pxe->pxenv.segment, pxe->pxenv.offset );
-               pxe->entry = pxenv.RMEntry;
-               if ( pxenv.Version >= 0x0201 ) {
-                       pxe->ppxe = pxenv.PXEPtr;
-                       copy_from_real ( &ppxe, pxe->ppxe.segment,
-                                        pxe->ppxe.offset, sizeof ( ppxe ) );
-                       if ( ( memcmp ( ppxe.Signature, "!PXE", 4 ) == 0 ) &&
-                            ( checksum ( &ppxe, sizeof ( ppxe ) ) == 0 ) ) {
-                               DBGC ( pxe, "PXE %p has !PXE structure at "
-                                      "%04x:%04x\n", pxe,
-                                      pxe->ppxe.segment, pxe->ppxe.offset );
-                               pxe->entry = ppxe.EntryPointSP;
-                       }
-               }
-               DBGC ( pxe, "PXE %p using entry point at %04x:%04x\n", pxe,
-                      pxe->entry.segment, pxe->entry.offset );
-
-               /* Register PXE device */
-               if ( undi_probe ( pxe ) == 0 ) {
-                       /* Device registered; drop reference */
-                       pxe = NULL;
-               } else {
-                       /* Not registered; re-use struct pxe_device */
-                       list_del ( &pxe->dev.siblings );
-               }
-       }
-
-       free ( pxe );
-       return 0;
-
- err:
-       free ( pxe );
-       pxebus_remove ( rootdev );
-       return rc;
-}
-
-/**
- * Remove PXE root bus
- *
- * @v rootdev          PXE bus root device
- */
-static void pxebus_remove ( struct root_device *rootdev ) {
-       struct pxe_device *pxe;
-       struct pxe_device *tmp;
-
-       list_for_each_entry_safe ( pxe, tmp, &rootdev->dev.children,
-                                  dev.siblings ) {
-               unregister_pxedev ( pxe );
-               free ( pxe );
-       }
-}
-
-/** PXE bus root device driver */
-static struct root_driver pxe_root_driver = {
-       .probe = pxebus_probe,
-       .remove = pxebus_remove,
-};
-
-/** PXE bus root device */
-struct root_device pxe_root_device __root_device = {
-       .name = "PXE",
-       .driver = &pxe_root_driver,
-};
-
-#endif