Index: 8xx/drivers/net/fec_8xx/Kconfig
===================================================================
--- 8xx.orig/drivers/net/fec_8xx/Kconfig	2005-08-03 22:50:06.000000000 -0300
+++ 8xx/drivers/net/fec_8xx/Kconfig	2005-08-03 22:50:06.000000000 -0300
@@ -1,6 +1,6 @@
 config FEC_8XX
 	tristate "Motorola 8xx FEC driver"
-	depends on NET_ETHERNET && 8xx && (NETTA || NETPHONE)
+	depends on NET_ETHERNET && 8xx && (NETTA || NETPHONE || SIEMENS_TME1)
 	select MII
 
 config FEC_8XX_GENERIC_PHY
Index: 8xx/drivers/net/fec_8xx/Makefile
===================================================================
--- 8xx.orig/drivers/net/fec_8xx/Makefile	2005-08-03 22:49:36.000000000 -0300
+++ 8xx/drivers/net/fec_8xx/Makefile	2005-08-03 22:50:06.000000000 -0300
@@ -10,3 +10,6 @@
 ifeq ($(CONFIG_NETTA),y)
 fec_8xx-objs	+= fec_8xx-netta.o
 endif
+ifeq ($(CONFIG_SIEMENS_TME1),y)
+fec_8xx-objs	+= fec_8xx-siemens.o
+endif
Index: 8xx/drivers/net/fec_8xx/fec_8xx-siemens.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 8xx/drivers/net/fec_8xx/fec_8xx-siemens.c	2005-08-03 22:50:06.000000000 -0300
@@ -0,0 +1,73 @@
+/*
+ * FEC instantatiation file for Siemens TM E1
+ */
+
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/sched.h>
+#include <linux/string.h>
+#include <linux/ptrace.h>
+#include <linux/errno.h>
+#include <linux/ioport.h>
+#include <linux/slab.h>
+#include <linux/interrupt.h>
+#include <linux/pci.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/skbuff.h>
+#include <linux/spinlock.h>
+#include <linux/mii.h>
+#include <linux/ethtool.h>
+#include <linux/bitops.h>
+
+#include <asm/8xx_immap.h>
+#include <asm/pgtable.h>
+#include <asm/mpc8xx.h>
+#include <asm/irq.h>
+#include <asm/uaccess.h>
+#include <asm/commproc.h>
+#include <asm/firmware.h>
+
+#include "fec_8xx.h"
+
+/*************************************************/
+
+static struct fec_platform_info fec1_info = {
+	.fec_no = 0,
+	.use_mdio = 1,
+	.phy_addr = 0,
+	.fec_irq = FEC_INTERRUPT,
+	.phy_irq = PHY_INTERRUPT,
+	.rx_ring = 128,
+	.tx_ring = 16,
+	.rx_copybreak = 240,
+	.use_napi = 1,
+	.napi_weight = 17,
+};
+
+static struct net_device *fec1_dev;
+
+int fec_8xx_platform_init(void)
+{
+	char *addr;
+
+	/* fill up */
+	fec1_info.sys_clk = fw_get_intfreq();
+
+	addr = fw_get_enetaddr(0);
+	memcpy(fec1_info.macaddr, addr, sizeof(fec1_info.macaddr));
+
+	fec_8xx_init_one(&fec1_info, &fec1_dev);
+
+	return fec1_dev != NULL? 0:-1;
+}
+
+void fec_8xx_platform_cleanup(void)
+{
+	if (fec1_dev != NULL)
+		fec_8xx_cleanup_one(fec1_dev);
+}
+
