# HG changeset patch # User asl # Date 1078222568 0 # Node ID 29e6a3503d34f8249da35216eabe3ec1ae4990da # Parent dd185273ac785ed72c8f746bfd3c01d8bea32fcc * all: Platform specific information to use generic AMD Lance PCI driver for the PC platform diff --git a/packages/devs/eth/i386/pc/lancepci/current/ChangeLog b/packages/devs/eth/i386/pc/lancepci/current/ChangeLog new file mode 100644 --- /dev/null +++ b/packages/devs/eth/i386/pc/lancepci/current/ChangeLog @@ -0,0 +1,39 @@ +2002-07-17 Iztok Zupet + + * 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#### +//=========================================================================== diff --git a/packages/devs/eth/i386/pc/lancepci/current/cdl/i386_pc_lancepci_eth_drivers.cdl b/packages/devs/eth/i386/pc/lancepci/current/cdl/i386_pc_lancepci_eth_drivers.cdl 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 " + puts $::cdl_system_header "#define CYGDAT_DEVS_ETH_AMD_LANCEPCI_CFG " + 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" + } + } + } +} diff --git a/packages/devs/eth/i386/pc/lancepci/current/include/devs_eth_i386_pc_lancepci.inl b/packages/devs/eth/i386/pc/lancepci/current/include/devs_eth_i386_pc_lancepci.inl 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 // 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