diff --git a/Makefile b/Makefile
index 85204da..8ef81c7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 3
 PATCHLEVEL = 8
 SUBLEVEL = 7
-EXTRAVERSION =
+EXTRAVERSION = -busware
 NAME = Displaced Humerus Anterior
 
 # *DOCUMENTATION*
diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi
index 65415c5..746c92c 100644
--- a/arch/arm/boot/dts/imx23.dtsi
+++ b/arch/arm/boot/dts/imx23.dtsi
@@ -292,6 +292,39 @@
 					fsl,voltage = <1>;
 					fsl,pull-up = <1>;
 				};
+
+				i2c0_pins_a: i2c0@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x01e0 /* MX23_PAD_I2C_SCL__I2C_SCL */
+						0x01f0 /* MX23_PAD_I2C_SDA__I2C_SDA */
+					>;
+					fsl,drive-strength = <1>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <1>;
+				};
+
+				i2c1_pins_a: i2c1@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1171 /* MX23_PAD_LCD_ENABLE__I2C_SCL */
+						0x1181 /* MX23_PAD_LCD_HSYNC__I2C_SDA  */
+					>;
+					fsl,drive-strength = <1>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <1>;
+				};
+
+				i2c2_pins_a: i2c2@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x2031 /* MX23_PAD_SSP1_DATA1__I2C_SCL  */
+						0x2041 /* MX23_PAD_SSP1_DATA2__I2C_SDA  */
+					>;
+					fsl,drive-strength = <1>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <1>;
+				};
 			};
 
 			digctl@8001c000 {
@@ -350,7 +383,7 @@
 				reg = <0x80038000 0x2000>;
 				status = "disabled";
 			};
-                };
+		};
 
 		apbx@80040000 {
 			compatible = "simple-bus";
@@ -400,8 +433,14 @@
 				status = "disabled";
 			};
 
-			i2c@80058000 {
+			i2c0: i2c@80058000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx28-i2c";
 				reg = <0x80058000 0x2000>;
+				interrupts = <27 26>;
+				clock-frequency = <100000>;
+				fsl,i2c-dma-channel = <3>;
 				status = "disabled";
 			};
 
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 6214181..2b1150e 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -32,6 +32,10 @@
 #include <linux/usb/usbnet.h>
 #include <linux/slab.h>
 #include "smsc95xx.h"
+#ifdef CONFIG_ARCH_MXS
+#include <mach/common.h>
+#include <linux/of_platform.h>
+#endif
 
 #define SMSC_CHIPNAME			"smsc95xx"
 #define SMSC_DRIVER_VERSION		"1.0.4"
@@ -777,6 +781,12 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
 
 static void smsc95xx_init_mac_address(struct usbnet *dev)
 {
+#ifdef CONFIG_ARCH_MXS
+        const u32 *ocotp = mxs_get_ocotp();
+        struct device_node *np, *from = NULL;
+        u32 para = 0;
+#endif
+
 	/* try reading mac address from EEPROM */
 	if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
 			dev->net->dev_addr) == 0) {
@@ -787,6 +797,32 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
 		}
 	}
 
+
+#ifdef CONFIG_ARCH_MXS
+	/* This checks for "oui" in dts and reads first OTP to complete a mac address */
+        if (ocotp[0]) {
+
+                np = of_find_compatible_node(from, NULL, "fsl,imx23");
+                if (np) {
+
+                	from = np;
+			of_property_read_u32(np, "oui", &para);
+
+			if (para) {
+
+                		dev->net->dev_addr[0] = (para >> 16) & 0xFF;
+                		dev->net->dev_addr[1] = (para >>  8) & 0xFF;
+                		dev->net->dev_addr[2] = (para >>  0) & 0xFF;
+                		dev->net->dev_addr[3] = (ocotp[0] >> 16) & 0xFF;
+                		dev->net->dev_addr[4] = (ocotp[0] >>  8) & 0xFF;
+                		dev->net->dev_addr[5] = (ocotp[0] >>  0) & 0xFF;
+
+                		return;
+			}
+		}
+        }
+#endif
+
 	/* no eeprom, or eeprom values are invalid. generate random MAC */
 	eth_hw_addr_random(dev->net);
 	netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index e0d0ba4..a94ae60 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -18,6 +18,8 @@
 #include <linux/rtc.h>
 #include <linux/bcd.h>
 #include <linux/rtc/ds1307.h>
+#include <linux/of.h>
+
 
 /*
  * We can't determine type by probing, but if we expect pre-Linux code
@@ -623,11 +625,13 @@ static int ds1307_probe(struct i2c_client *client,
 	struct ds1307		*ds1307;
 	int			err = -ENODEV;
 	int			tmp;
+	u32			prop;
 	const struct chip_desc	*chip = &chips[id->driver_data];
 	struct i2c_adapter	*adapter = to_i2c_adapter(client->dev.parent);
 	int			want_irq = false;
 	unsigned char		*buf;
 	struct ds1307_platform_data *pdata = client->dev.platform_data;
+	struct device_node 	*np;
 	static const int	bbsqi_bitpos[] = {
 		[ds_1337] = 0,
 		[ds_1339] = DS1339_BIT_BBSQI,
@@ -647,6 +651,24 @@ static int ds1307_probe(struct i2c_client *client,
 	ds1307->client	= client;
 	ds1307->type	= id->driver_data;
 
+#ifdef CONFIG_OF
+        np = client->dev.of_node;
+        if (np) { 
+        	if (of_get_property(np, "linux,tcs", NULL)) {
+
+        		if (!pdata)
+        			pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
+        		if (!pdata)
+                		return -ENOMEM;
+
+        		of_property_read_u32(np, "linux,tcs", &prop);
+			pdata->trickle_charger_setup = prop & 0xff;
+
+			client->dev.platform_data = pdata;
+		}
+        }
+#endif
+
 	if (pdata && pdata->trickle_charger_setup && chip->trickle_charger_reg)
 		i2c_smbus_write_byte_data(client, chip->trickle_charger_reg,
 			DS13XX_TRICKLE_CHARGER_MAGIC | pdata->trickle_charger_setup);
@@ -957,10 +979,19 @@ static int ds1307_remove(struct i2c_client *client)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id ds1307_dt_ids[] = {
+        { .compatible = "ds1307" },
+        {}
+};
+MODULE_DEVICE_TABLE(of, ds1307_dt_ids);
+#endif
+
 static struct i2c_driver ds1307_driver = {
 	.driver = {
 		.name	= "rtc-ds1307",
 		.owner	= THIS_MODULE,
+		.of_match_table = of_match_ptr(ds1307_dt_ids),
 	},
 	.probe		= ds1307_probe,
 	.remove		= ds1307_remove,
diff --git a/arch/arm/boot/dts/imx23-tuxradio2.dts b/arch/arm/boot/dts/imx23-tuxradio2.dts
new file mode 100644
index 0000000..3fbf5ff
--- /dev/null
+++ b/arch/arm/boot/dts/imx23-tuxradio2.dts
@@ -0,0 +1,212 @@
+/*
+ * Copyright 2012 Freescale Semiconductor, Inc.
+ *
+ * Author: Fabio Estevam <fabio.estevam@freescale.com>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx23.dtsi"
+
+/ {
+	model = "i.MX23 TuxRadio2 Board";
+	compatible = "busware,imx23-tuxradio2", "fsl,imx23";
+	oui = <0xa45055>; /* rest of mac comes from first user OTP */
+
+	memory {
+		reg = <0x40000000 0x04000000>;
+	};
+
+	apb@80000000 {
+		apbh@80000000 {
+			ssp0: ssp@80010000 {
+				compatible = "fsl,imx23-mmc";
+				pinctrl-names = "default";
+				pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>;
+				bus-width = <4>;
+				status = "okay";
+			};
+
+			pinctrl@80018000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&hog_pins_a>;
+
+				hog_pins_a: hog@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1193 /* MX23_PAD_LCD_VSYNC__GPIO_1_25 */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_22: led_gpio1_22@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1163 /* MX23_PAD_LCD_DOTCK__GPIO_1_22 */
+					>;
+					fsl,drive-strength = <2>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_18: led_gpio1_18@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1123 /* MX23_PAD_LCD_RESET__GPIO_1_18 */
+					>;
+					fsl,drive-strength = <2>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_20: led_gpio1_20@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1143 /* MX23_PAD_LCD_WR__GPIO_1_20 */
+					>;
+					fsl,drive-strength = <2>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_21: led_gpio1_21@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1153 /* MX23_PAD_LCD_CS__GPIO_1_22 */
+					>;
+					fsl,drive-strength = <2>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_6: led_gpio1_6@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1063 /* MX23_PAD_LCD_D06__GPIO_1_6 */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				led_pin_gpio1_7: led_gpio1_7@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x1073 /* MX23_PAD_LCD_D07__GPIO_1_7 */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+			};
+
+			ssp1: ssp@80034000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx23-spi";
+				pinctrl-names = "default";
+				pinctrl-0 = <&spi2_pins_a>;
+				status = "okay";
+			};
+		};
+
+		apbx@80040000 {
+			i2c0: i2c@80058000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&i2c1_pins_a>;
+				status = "okay";
+
+                                rtc@68 {
+                                        compatible = "dallas,ds1339";
+                                        reg = <0x68>;
+					linux,tcs = <5>; /* DS1307_TRICKLE_CHARGER_250_OHM | DS1307_TRICKLE_CHARGER_NO_DIODE */
+                                };
+
+			};
+
+			duart: serial@80070000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&duart_pins_a>;
+				status = "okay";
+			};
+
+			auart0: serial@8006c000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart0_2pins_a>;
+				status = "okay";
+			};
+
+			usbphy0: usbphy@8007c000 {
+				status = "okay";
+			};
+		};
+	};
+
+	ahb@80080000 {
+		usb0: usb@80080000 {
+			vbus-supply = <&reg_usb0_vbus>;
+			status = "okay";
+		};
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_usb0_vbus: usb0_vbus {
+			compatible = "regulator-fixed";
+			regulator-name = "usb0_vbus";
+			regulator-min-microvolt = <5000000>;
+			regulator-max-microvolt = <5000000>;
+			enable-active-high;
+			startup-delay-us = <300>; /* LAN9215 requires a POR of 200us minimum */
+			gpio = <&gpio1 25 0>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&led_pin_gpio1_22>;
+
+		statusA {
+			label = "lo:green";
+			gpios = <&gpio1 22 0>;
+			linux,default-trigger = "mmc0";
+		};
+
+		statusB {
+			label = "ro:green";
+			gpios = <&gpio1 18 0>;
+			linux,default-trigger = "heartbeat";
+		};
+
+		statusC {
+			label = "lu:orange";
+			gpios = <&gpio1 20 0>;
+		};
+
+		statusD {
+			label = "ru:orange";
+			gpios = <&gpio1 21 0>;
+		};
+/*
+		CSM_BS {
+			label = "CSM_BS";
+			gpios = <&gpio1 7 0>;
+		};
+
+		CSM_RESET {
+			label = "CSM_RESET";
+			gpios = <&gpio1 6 0>;
+		};
+*/
+	};
+};
