changeset 1527:29e6a3503d34

* all: Platform specific information to use generic AMD Lance PCI driver for the PC platform
author asl
date Tue, 02 Mar 2004 10:16:08 +0000
parents dd185273ac78
children 970d06598f83
files packages/devs/eth/i386/pc/lancepci/current/ChangeLog packages/devs/eth/i386/pc/lancepci/current/cdl/i386_pc_lancepci_eth_drivers.cdl packages/devs/eth/i386/pc/lancepci/current/include/devs_eth_i386_pc_lancepci.inl
diffstat 3 files changed, 279 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/devs/eth/i386/pc/lancepci/current/ChangeLog
@@ -0,0 +1,39 @@
+2002-07-17  Iztok Zupet  <iz@vsr.si>
+
+	* all: Platform specific information to use generic AMD Lance
+	PCI driver for the PC platform
+
+//===========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+//
+// eCos 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 or (at your option) any later version.
+//
+// eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/devs/eth/i386/pc/lancepci/current/cdl/i386_pc_lancepci_eth_drivers.cdl
@@ -0,0 +1,129 @@
+# ====================================================================
+#
+#      pc_lancepci_eth_drivers.cdl
+#
+#      Ethernet drivers - support for AMD Lance PCI ethernet controller
+#      on the i386 PC (also wmWare)
+#
+# ====================================================================
+#####ECOSGPLCOPYRIGHTBEGIN####
+## -------------------------------------------
+## This file is part of eCos, the Embedded Configurable Operating System.
+## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+##
+## eCos 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 or (at your option) any later version.
+##
+## eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
+## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+##
+## As a special exception, if other files instantiate templates or use macros
+## or inline functions from this file, or you compile this file and link it
+## with other works to produce a work based on this file, this file does not
+## by itself cause the resulting work to be covered by the GNU General Public
+## License. However the source code for this file must still be made available
+## in accordance with section (3) of the GNU General Public License.
+##
+## This exception does not invalidate any other reasons why a work based on
+## this file might be covered by the GNU General Public License.
+##
+## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+## at http://sources.redhat.com/ecos/ecos-license/
+## -------------------------------------------
+#####ECOSGPLCOPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      iz
+# Contributors:
+# Date:           2002-07-17
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_DEVS_ETH_I386_PC_LANCEPCI {
+    display       "PC Lance PCI board ethernet driver"
+    description   "Ethernet driver for PCI Lance."
+
+    parent        CYGPKG_IO_ETH_DRIVERS
+    active_if	  CYGPKG_IO_ETH_DRIVERS
+
+    include_dir   cyg/io
+
+    # FIXME: This really belongs in the AMD_LANCEPCI package
+    cdl_interface CYGINT_DEVS_ETH_AMD_LANCEPCI_REQUIRED {
+        display   "AMD Lance PCI ethernet driver required"
+    }
+
+    define_proc {
+        puts $::cdl_system_header "/***** ethernet driver proc output start *****/"
+        puts $::cdl_system_header "#define CYGDAT_DEVS_ETH_AMD_LANCEPCI_INL <cyg/io/devs_eth_i386_pc_lancepci.inl>"
+        puts $::cdl_system_header "#define CYGDAT_DEVS_ETH_AMD_LANCEPCI_CFG <pkgconf/devs_eth_i386_pc_lancepci.h>"
+        puts $::cdl_system_header "/*****  ethernet driver proc output end  *****/"
+    }
+
+    cdl_component CYGPKG_DEVS_ETH_I386_PC_LANCEPCI_ETH0 {
+        display       "Lance PCI ethernet port 0 driver"
+        flavor        bool
+        default_value 1
+        description   "
+            This option includes the ethernet device driver for the
+            PC (vmWare) Lance PCI port 0."
+
+        implements CYGHWR_NET_DRIVERS
+        implements CYGHWR_NET_DRIVER_ETH0
+        implements CYGINT_DEVS_ETH_AMD_LANCEPCI_REQUIRED
+
+        cdl_option CYGNUM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_RX_RING_SIZE {
+            display       "Size of RX ring for ETH0"
+            flavor        data
+            default_value 4
+            legal_values  { 4 8 16 32 64 128 }
+            description   "
+                This option sets the size of the RX ring."
+        }
+
+        cdl_option CYGNUM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_TX_RING_SIZE {
+            display       "Size of TX ring for ETH0"
+            flavor        data
+            default_value 4
+            legal_values  { 4 8 16 32 64 128 }
+            description   "
+                This option sets the size of the TX ring."
+        }
+
+        cdl_option CYGDAT_DEVS_ETH_I386_PC_LANCEPCI_ETH0_NAME {
+            display       "Device name for the ETH0 ethernet port 0 driver"
+            flavor        data
+            default_value {"\"eth0\""}
+            description   "
+                This option sets the name of the ethernet device for the
+                PC Lance port 0."
+        }
+
+        cdl_component CYGSEM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_SET_ESA {
+            display       "Set the ethernet station address"
+            flavor        bool
+            default_value   0
+            description   "Enabling this option will allow the ethernet
+            station address to be forced to the value set by the
+            configuration.  This may be required if the hardware does
+            not include a serial EEPROM for the ESA."
+
+            cdl_option CYGDAT_DEVS_ETH_I386_PC_LANCEPCI_ETH0_ESA {
+                display       "The ethernet station address"
+                flavor        data
+                default_value {"{0x08, 0x88, 0x12, 0x34, 0x56, 0x78}"}
+                description   "The ethernet station address"
+            }
+        }
+    }
+}
new file mode 100644
--- /dev/null
+++ b/packages/devs/eth/i386/pc/lancepci/current/include/devs_eth_i386_pc_lancepci.inl
@@ -0,0 +1,111 @@
+//==========================================================================
+//
+//      devs/eth/i386/pc/include/devs_eth_i386_pc_lancepci.inl
+//
+//      PC Lance PCI ethernet I/O definitions.
+//
+//==========================================================================
+//####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
+//
+// eCos 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 or (at your option) any later version.
+//
+// eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
+// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+//
+// As a special exception, if other files instantiate templates or use macros
+// or inline functions from this file, or you compile this file and link it
+// with other works to produce a work based on this file, this file does not
+// by itself cause the resulting work to be covered by the GNU General Public
+// License. However the source code for this file must still be made available
+// in accordance with section (3) of the GNU General Public License.
+//
+// This exception does not invalidate any other reasons why a work based on
+// this file might be covered by the GNU General Public License.
+//
+// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
+// at http://sources.redhat.com/ecos/ecos-license/
+// -------------------------------------------
+//####ECOSGPLCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):   iz
+// Contributors:
+// Date:        2002-07-17
+// Purpose:     PC Lance PCI (VLANCE device in vmWare) ethernet defintions
+//####DESCRIPTIONEND####
+//==========================================================================
+
+#include <cyg/hal/hal_intr.h>           // CYGNUM_HAL_INTERRUPT_ETHR
+
+#ifdef __WANT_CONFIG
+#define CYGHWR_AMD_LANCEPCI_PCI_MEM_MAP_BASE (CYGARC_UNCACHED_ADDRESS(CYGMEM_SECTION_pci_window))
+#define CYGHWR_AMD_LANCEPCI_PCI_MEM_MAP_SIZE CYGMEM_SECTION_pci_window_SIZE
+#define HAL_PCI_CPU_TO_BUS(__cpu_addr, __bus_addr)   \
+    CYG_MACRO_START                                  \
+    (__bus_addr) = CYGARC_PHYSICAL_ADDRESS(__cpu_addr);   \
+    CYG_MACRO_END
+#endif // __WANT_CONFIG
+
+
+#ifdef __WANT_DEVS
+
+#ifdef CYGPKG_DEVS_ETH_I386_PC_LANCEPCI_ETH0
+
+static lancepci_priv_data amd_lancepci_eth0_priv_data = {
+#ifdef CYGSEM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_SET_ESA
+    esa : CYGDAT_DEVS_ETH_I386_PC_LANCEPCI_ETH0_ESA,
+    hardwired_esa : true,
+#else
+    hardwired_esa : false,
+#endif
+    config_esa : NULL,             // rely on the hardwired address for now
+    rx_ring : NULL,
+    rx_ring_cnt : CYGNUM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_RX_RING_SIZE,
+    rx_ring_log_cnt : 2,
+    tx_ring : NULL,
+    tx_ring_cnt : CYGNUM_DEVS_ETH_I386_PC_LANCEPCI_ETH0_TX_RING_SIZE,
+    tx_ring_log_cnt : 2,
+};
+
+ETH_DRV_SC(amd_lancepci_sc,
+           &amd_lancepci_eth0_priv_data, // Driver specific data
+           CYGDAT_DEVS_ETH_I386_PC_LANCEPCI_ETH0_NAME,
+           lancepci_start,
+           lancepci_stop,
+           lancepci_control,
+           lancepci_can_send,
+           lancepci_send,
+           lancepci_recv,
+           lancepci_deliver,     // "pseudoDSR" called from fast net thread
+           lancepci_poll,        // poll function, encapsulates ISR and DSR
+           lancepci_int_vector);
+
+NETDEVTAB_ENTRY(lancepci_netdev,
+                "lancepci_" CYGDAT_DEVS_ETH_I386_PC_LANCEPCI_ETH0_NAME,
+                amd_lancepci_init,
+                &amd_lancepci_sc);
+#endif // CYGPKG_DEVS_ETH_I386_PC_LANCEPCI_ETH0
+
+// These arrays are used for sanity checking of pointers
+struct lancepci_priv_data *
+lancepci_priv_array[CYGNUM_DEVS_ETH_AMD_LANCEPCI_DEV_COUNT] = {
+#ifdef CYGPKG_DEVS_ETH_I386_PC_LANCEPCI_ETH0
+    &amd_lancepci_eth0_priv_data,
+#endif
+};
+
+#endif // __WANT_DEVS
+
+// EOF devs_eth_pc_lancepci.inl