diff -Naur linux-2.6.37.orig/arch/arm/mach-at91/board-boff210.c linux-2.6.37/arch/arm/mach-at91/board-boff210.c
--- linux-2.6.37.orig/arch/arm/mach-at91/board-boff210.c	1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.37/arch/arm/mach-at91/board-boff210.c	2011-01-31 22:51:11.467254996 +0100
@@ -0,0 +1,174 @@
+/* 
+ * linux/arch/arm/mach-at91/board-boff210.c
+ *
+ *  Copyright (C) 2007-2010 Boff Corp.
+ *
+ *  Epson S1D framebuffer glue code is:
+ *     Copyright (C) 2007-2010 Lucjan Bryndza <lucjan.bryndza@ep.com.pl>
+ *
+ * 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
+ * (at your option) 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/spi/spi.h>
+#include <linux/mtd/physmap.h>
+
+//#include <asm/hardware.h>
+#include <asm/setup.h>
+#include <asm/mach-types.h>
+#include <asm/irq.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/irq.h>
+
+#include <mach/board.h>
+#include <mach/gpio.h>
+#include <mach/at91rm9200_mc.h>
+#include <linux/i2c-gpio.h>
+
+#include "generic.h"
+
+
+
+static void __init bf_map_io(void)
+{
+	/* Initialize processor: 18.432 MHz crystal */
+	at91rm9200_initialize(18432000, AT91RM9200_PQFP);
+
+
+    /* DBGU on ttyS0. (Rx & Tx only) */
+	at91_register_uart(0, 0, 0);
+
+	/* USART1 on ttyS1. */
+	at91_register_uart(AT91RM9200_ID_US1, 1, 0);
+
+	/* Register USART2 at ttyS2 */
+	at91_register_uart(AT91RM9200_ID_US2,2,0);
+
+	/* set serial console to ttyS0 (ie, DBGU) */
+	at91_set_serial_console(0);
+}
+
+static void __init bf_init_irq(void)
+{
+	at91rm9200_init_interrupts(NULL);
+}
+
+
+
+
+static struct at91_eth_data __initdata bf_eth_data = {
+	.phy_irq_pin	= 0,
+	.is_rmii	= 0,
+};
+
+static struct at91_usbh_data __initdata bf_usbh_data = {
+	.ports		= 1,
+};
+
+static struct at91_udc_data __initdata bf_udc_data = {
+	.vbus_pin	= AT91_PIN_PC11,
+	.pullup_pin	= AT91_PIN_PB28,
+};
+
+
+static struct at91_mmc_data __initdata bf_mmc_data = {
+	.slot_b		= 0,
+	.wire4		= 1,
+	.det_pin	= AT91_PIN_PB27,
+};
+
+static struct spi_board_info bf_spi_devices[] = {
+	{	/* DataFlash chip */
+		.modalias	= "mtd_dataflash",
+		.chip_select	= 0,
+		.max_speed_hz	= 15 * 1000 * 1000,
+	}
+};
+
+//I2c In gpio Mode
+static struct i2c_gpio_platform_data i2c_gpio_data =
+{
+	.sda_pin	= AT91_PIN_PA25,
+	.scl_pin	= AT91_PIN_PA26,
+    .sda_is_open_drain    = 1,
+    .scl_is_open_drain    = 1,
+    .udelay            = 2,        /* ~100 kHz */
+};
+
+static struct platform_device i2c_gpio_device =
+{
+	.name		= "i2c-gpio",
+	.id		= 0,
+	.dev		=
+  {
+		.platform_data	= &i2c_gpio_data,
+  }
+};
+
+//I2C device map
+static struct i2c_board_info __initdata bf210_i2c_devices[] =
+{
+        {
+            I2C_BOARD_INFO("pcf8563", 0x51),
+        }
+};
+
+
+static void __init bf_board_init(void)
+{
+	/* Serial */
+	at91_add_device_serial();
+    //I2C code
+	at91_set_GPIO_periph(AT91_PIN_PA25, 1);		/* TWD (SDA) */
+	at91_set_multi_drive(AT91_PIN_PA25, 1);
+	at91_set_GPIO_periph(AT91_PIN_PA26, 1);		/* TWCK (SCL) */
+	at91_set_multi_drive(AT91_PIN_PA26, 1);
+	i2c_register_board_info(0,bf210_i2c_devices,ARRAY_SIZE(bf210_i2c_devices));
+    platform_device_register(&i2c_gpio_device);
+
+	/* Ethernet */
+	at91_add_device_eth(&bf_eth_data);
+	/* USB Host */
+	at91_add_device_usbh(&bf_usbh_data);
+	/* USB Device */
+	at91_add_device_udc(&bf_udc_data);
+	at91_set_multi_drive(bf_udc_data.pullup_pin, 1);	/* pullup_pin is connected to reset */
+	/* SPI */
+	at91_add_device_spi(bf_spi_devices, ARRAY_SIZE(bf_spi_devices));
+#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
+	/* DataFlash card */
+	at91_set_gpio_output(AT91_PIN_PB7, 0);
+#else
+	/* MMC */
+	at91_set_gpio_output(AT91_PIN_PB7, 1);	/* this MMC card slot can optionally use SPI signaling (CS3). */
+	at91_add_device_mmc(0, &bf_mmc_data);
+#endif
+}
+
+MACHINE_START(AT91RM9200, "Boff BF210 Board")
+	/* Maintainer: Lucjan Bryndza */
+	.boot_params	= AT91_SDRAM_BASE + 0x100,
+	.timer		= &at91rm9200_timer,
+	.map_io		= bf_map_io,
+	.init_irq	= bf_init_irq,
+	.init_machine	= bf_board_init,
+MACHINE_END
+
diff -Naur linux-2.6.37.orig/arch/arm/mach-at91/Kconfig linux-2.6.37/arch/arm/mach-at91/Kconfig
--- linux-2.6.37.orig/arch/arm/mach-at91/Kconfig	2011-01-31 20:34:41.137254994 +0100
+++ linux-2.6.37/arch/arm/mach-at91/Kconfig	2011-01-31 22:13:42.317254994 +0100
@@ -124,6 +124,13 @@
 	help
 	  Select this if you are using Atmel's AT91RM9200-EK Evaluation Kit.
 	  <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3507>
+	  
+config MACH_AT91BOFF210
+	bool "Atmel AT91RM9200 BoFF BF210 evaluation board"
+	depends on ARCH_AT91RM9200
+	help
+	  Select this if you are using AT91RM9200 BoFF BF210 evaluation board.
+	  <http://bryndza.ep.com.pl>
 
 config MACH_CSB337
 	bool "Cogent CSB337"
diff -Naur linux-2.6.37.orig/arch/arm/mach-at91/Makefile linux-2.6.37/arch/arm/mach-at91/Makefile
--- linux-2.6.37.orig/arch/arm/mach-at91/Makefile	2011-01-31 20:34:41.137254994 +0100
+++ linux-2.6.37/arch/arm/mach-at91/Makefile	2011-01-31 22:13:42.317254994 +0100
@@ -37,7 +37,7 @@
 obj-$(CONFIG_MACH_YL9200)	+= board-yl-9200.o
 obj-$(CONFIG_MACH_CPUAT91)	+= board-cpuat91.o
 obj-$(CONFIG_MACH_ECO920)	+= board-eco920.o
-
+obj-$(CONFIG_MACH_AT91BOFF210)	+= board-boff210.o
 # AT91SAM9260 board-specific support
 obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
 obj-$(CONFIG_MACH_CAM60)	+= board-cam60.o
diff -Naur linux-2.6.37.orig/drivers/net/arm/at91_ether.c linux-2.6.37/drivers/net/arm/at91_ether.c
--- linux-2.6.37.orig/drivers/net/arm/at91_ether.c	2011-01-31 20:34:41.637254995 +0100
+++ linux-2.6.37/drivers/net/arm/at91_ether.c	2011-01-31 22:13:42.317254994 +0100
@@ -236,6 +236,12 @@
 		if (!(phy & (1 << 7)))
 			goto done;
 	}
+    else if (lp->phy_type == MII_STE100P_ID) {
+		read_phy(lp->phy_address, MII_STE100P_XCSIIS_REG, &phy); /* ack interrupt in STE100P PHY */
+		if (!(phy & 0x007F))
+		    goto done;
+	}
+
 
 	update_linkspeed(dev, 0);
 
@@ -304,6 +310,12 @@
 		dsintr = dsintr | 0x3;			/* set bits 0,1 */
 		write_phy(lp->phy_address, MII_DPMICR_REG, dsintr);
 	}
+	else if (lp->phy_type == MII_STE100P_ID) {	/* for STE100P PHY */
+		read_phy(lp->phy_address, MII_STE100P_XIE_REG, &dsintr);
+
+		dsintr |= 0x007F;
+		write_phy(lp->phy_address, MII_STE100P_XIE_REG, dsintr);
+	}
 
 	disable_mdi();
 	spin_unlock_irq(&lp->lock);
@@ -360,6 +372,11 @@
 		dsintr = dsintr & ~0x3c;			/* clear bits 2..5 */
 		write_phy(lp->phy_address, MII_DPMISR_REG, dsintr);
 	}
+    else if (lp->phy_type == MII_STE100P_ID) {	/* for STE100P PHY */
+		read_phy(lp->phy_address, MII_STE100P_XIE_REG, &dsintr);
+		dsintr &= 0xFF80;
+		write_phy(lp->phy_address, MII_STE100P_XIE_REG, dsintr);
+	}
 
 	disable_mdi();
 	spin_unlock_irq(&lp->lock);
@@ -1109,6 +1126,8 @@
 		printk(KERN_INFO "%s: Teridian 78Q21x3 PHY\n", dev->name);
 	else if (phy_type == MII_LAN83C185_ID)
 		printk(KERN_INFO "%s: SMSC LAN83C185 PHY\n", dev->name);
+    else if (phy_type == MII_STE100P_ID)
+		printk(KERN_INFO "%s: STE100P PHY\n", dev->name);
 
 	return 0;
 }
@@ -1151,6 +1170,7 @@
 			case MII_KS8721_ID:		/* Micrel KS8721: PHY_ID1 = 0x22, PHY_ID2 = 0x1610 */
 			case MII_T78Q21x3_ID:		/* Teridian 78Q21x3: PHY_ID1 = 0x0E, PHY_ID2 = 7237 */
 			case MII_LAN83C185_ID:		/* SMSC LAN83C185: PHY_ID1 = 0x0007, PHY_ID2 = 0xC0A1 */
+            case MII_STE100P_ID:		/* STE100P: PHY_ID1 = 0x1C04, PHY_ID2 = 0x0000 */
 				detected = at91ether_setup(phy_id, phy_address, pdev, ether_clk);
 				break;
 		}
diff -Naur linux-2.6.37.orig/drivers/net/arm/at91_ether.h linux-2.6.37/drivers/net/arm/at91_ether.h
--- linux-2.6.37.orig/drivers/net/arm/at91_ether.h	2011-01-31 20:34:41.637254995 +0100
+++ linux-2.6.37/drivers/net/arm/at91_ether.h	2011-01-31 22:13:42.317254994 +0100
@@ -45,6 +45,16 @@
 #define MII_DPMICR_REG		17
 #define MII_DPMISR_REG		18
 
+/* STE100P specific registers */
+#define MII_STE100P_XCSIIS_REG	0x11
+#define MII_STE100P_XIE_REG	0x12
+#define MII_XCR_REG		0x00
+#define MII_XCR_ISOLATE      0x0400
+
+/* STE100P PHY */
+#define MII_STE100P_ID  0x1c040010
+
+
 /* Altima AC101L PHY */
 #define MII_AC101L_ID		0x00225520
 
