.start = 0x20300000,
                .end = 0x20300000 + 0x100,
                .flags = IORESOURCE_MEM,
+       }, {
+               .start = 1,
+               .flags = IORESOURCE_BUS,
        }, {
                .start = IRQ_PF7,
                .end = IRQ_PF7,
 
                .start = 0x20300000,
                .end = 0x20300000 + 0x100,
                .flags = IORESOURCE_MEM,
+       }, {
+               .start = 1,
+               .flags = IORESOURCE_BUS,
        }, {
                .start = IRQ_PF10,
                .end = IRQ_PF10,
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       /* Set PF0 to 0, PF1 to 1 make /AMS3 work properly */
+       ret = gpio_request(GPIO_PF0, "net2272");
+       if (ret)
+               return ret;
+
+       ret = gpio_request(GPIO_PF1, "net2272");
+       if (ret) {
+               gpio_free(GPIO_PF0);
+               return ret;
+       }
+
+       ret = gpio_request(GPIO_PF11, "net2272");
+       if (ret) {
+               gpio_free(GPIO_PF0);
+               gpio_free(GPIO_PF1);
+               return ret;
+       }
+
+       gpio_direction_output(GPIO_PF0, 0);
+       gpio_direction_output(GPIO_PF1, 1);
+
+       /* Reset the USB chip */
+       gpio_direction_output(GPIO_PF11, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PF11, 1);
+#endif
+
+       return 0;
+}
+
 static int __init stamp_init(void)
 {
        int ret;
        }
 #endif
 
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
        return 0;
 }
 
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PG14, "net2272");
+       if (ret)
+               return ret;
+
+       /* Reset USB Chip, PG14 */
+       gpio_direction_output(GPIO_PG14, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PG14, 1);
+#endif
+
+       return 0;
+}
+
 static int __init cm_bf537e_init(void)
 {
        printk(KERN_INFO "%s(): registering device resources\n", __func__);
 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
        irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
 #endif
+
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        return 0;
 }
 
 
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PH15, driver_name);
+       if (ret)
+               return ret;
+
+       ret = gpio_request(GPIO_PH13, "net2272");
+       if (ret) {
+               gpio_free(GPIO_PH15);
+               return ret;
+       }
+
+       /* Set PH15 Low make /AMS2 work properly */
+       gpio_direction_output(GPIO_PH15, 0);
+
+       /* enable CLKBUF output */
+       bfin_write_VR_CTL(bfin_read_VR_CTL() | CLKBUFOE);
+
+       /* Reset the USB chip */
+       gpio_direction_output(GPIO_PH13, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PH13, 1);
+#endif
+
+       return 0;
+}
+
 static int __init cm_bf537u_init(void)
 {
        printk(KERN_INFO "%s(): registering device resources\n", __func__);
 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
        irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
 #endif
+
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        return 0;
 }
 
 
                .start = 0x20300000,
                .end = 0x20300000 + 0x100,
                .flags = IORESOURCE_MEM,
+       }, {
+               .start = 1,
+               .flags = IORESOURCE_BUS,
        }, {
                .start = IRQ_PF7,
                .end = IRQ_PF7,
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PF6, "net2272");
+       if (ret)
+               return ret;
+
+       /* Reset the USB chip */
+       gpio_direction_output(GPIO_PF6, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PF6, 1);
+#endif
+
+       return 0;
+}
+
 static int __init stamp_init(void)
 {
        printk(KERN_INFO "%s(): registering device resources\n", __func__);
                                ARRAY_SIZE(bfin_i2c_board_info));
        spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
 
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        return 0;
 }
 
 
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PG14, "net2272");
+       if (ret)
+               return ret;
+
+       /* Reset USB Chip, PG14 */
+       gpio_direction_output(GPIO_PG14, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PG14, 1);
+#endif
+
+       return 0;
+}
+
 static int __init tcm_bf537_init(void)
 {
        printk(KERN_INFO "%s(): registering device resources\n", __func__);
 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
        irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
 #endif
+
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        return 0;
 }
 
 
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PF46, "net2272");
+       if (ret)
+               return ret;
+
+       /* Reset USB Chip, PF46 */
+       gpio_direction_output(GPIO_PF46, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PF46, 1);
+#endif
+
+       return 0;
+}
+
 static int __init cm_bf561_init(void)
 {
        printk(KERN_INFO "%s(): registering device resources\n", __func__);
 #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
        irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
 #endif
+
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        return 0;
 }
 
 
                .start = 0x2C000000,
                .end = 0x2C000000 + 0x7F,
                .flags = IORESOURCE_MEM,
+       }, {
+               .start = 1,
+               .flags = IORESOURCE_BUS,
        }, {
                .start = IRQ_PF10,
                .end = IRQ_PF10,
 #endif
 };
 
+static int __init net2272_init(void)
+{
+#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
+       int ret;
+
+       ret = gpio_request(GPIO_PF11, "net2272");
+       if (ret)
+               return ret;
+
+       /* Reset the USB chip */
+       gpio_direction_output(GPIO_PF11, 0);
+       mdelay(2);
+       gpio_set_value(GPIO_PF11, 1);
+#endif
+
+       return 0;
+}
+
 static int __init ezkit_init(void)
 {
        int ret;
        udelay(400);
 #endif
 
+       if (net2272_init())
+               pr_warning("unable to configure net2272; it probably won't work\n");
+
        spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
        return 0;
 }