diff --git a/Makefile b/Makefile
index 407b9387002ea427370961f27c3b0a5f96912c38..f1f3e4bdd316828da68f083fc1a20467a0e71bee 100644
--- a/Makefile
+++ b/Makefile
@@ -205,22 +205,30 @@ LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs
 	fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a
 LIBS += net/libnet.a
 LIBS += disk/libdisk.a
-LIBS += rtc/librtc.a
-LIBS += dtt/libdtt.a
-LIBS += drivers/libdrivers.a
 LIBS += drivers/bios_emulator/libatibiosemu.a
-LIBS += drivers/nand/libnand.a
-LIBS += drivers/nand_legacy/libnand_legacy.a
-LIBS += drivers/onenand/libonenand.a
+LIBS += drivers/block/libblock.a
+LIBS += drivers/hwmon/libhwmon.a
+LIBS += drivers/i2c/libi2c.a
+LIBS += drivers/input/libinput.a
+LIBS += drivers/misc/libmisc.a
+LIBS += drivers/mtd/libmtd.a
+LIBS += drivers/mtd/nand/libnand.a
+LIBS += drivers/mtd/nand_legacy/libnand_legacy.a
+LIBS += drivers/mtd/onenand/libonenand.a
 LIBS += drivers/net/libnet.a
+LIBS += drivers/net/sk98lin/libsk98lin.a
+LIBS += drivers/pci/libpci.a
+LIBS += drivers/pcmcia/libpcmcia.a
 ifeq ($(CPU),mpc83xx)
 LIBS += drivers/qe/qe.a
 endif
 ifeq ($(CPU),mpc85xx)
 LIBS += drivers/qe/qe.a
 endif
+LIBS += drivers/rtc/librtc.a
 LIBS += drivers/serial/libserial.a
-LIBS += drivers/sk98lin/libsk98lin.a
+LIBS += drivers/usb/libusb.a
+LIBS += drivers/video/libvideo.a
 LIBS += post/libpost.a post/drivers/libpostdrivers.a
 LIBS += $(shell if [ -d post/lib_$(ARCH) ]; then echo \
 	"post/lib_$(ARCH)/libpost$(ARCH).a"; fi)
@@ -327,14 +335,26 @@ tags ctags:
 		ctags -w -o $(OBJTREE)/ctags `find $(SUBDIRS) include \
 				lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
 				fs/cramfs fs/fat fs/fdos fs/jffs2 \
-				net disk rtc dtt drivers drivers/sk98lin common \
+				net disk common drivers/bios_emulator \
+				drivers/block drivers/hwmon drivers/i2c \
+				drivers/input drivers/misc drivers/mtd \
+				drivers/mtd/nand drivers/mtd/nand_legacy \
+				drivers/mtd/onenand drivers/net drivers/net/sk98lin \
+				drivers/pci drivers/pcmcia drivers/qe drivers/rtc \
+				drivers/serial drivers/usb drivers/video \
 			\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
 
 etags:
 		etags -a -o $(OBJTREE)/etags `find $(SUBDIRS) include \
 				lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \
 				fs/cramfs fs/fat fs/fdos fs/jffs2 \
-				net disk rtc dtt drivers drivers/sk98lin common \
+				net disk common drivers/bios_emulator \
+				drivers/block drivers/hwmon drivers/i2c \
+				drivers/input drivers/misc drivers/mtd \
+				drivers/mtd/nand drivers/mtd/nand_legacy \
+				drivers/mtd/onenand drivers/net drivers/net/sk98lin \
+				drivers/pci drivers/pcmcia drivers/qe drivers/rtc \
+				drivers/serial drivers/usb drivers/video \
 			\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`
 
 $(obj)System.map:	$(obj)u-boot
diff --git a/board/cds/mpc8541cds/u-boot.lds b/board/cds/mpc8541cds/u-boot.lds
index dc87a122a100621e88138fe34b5f1a709b96d524..7a5daefeb752f7b9318444d0125cde0650b41fad 100644
--- a/board/cds/mpc8541cds/u-boot.lds
+++ b/board/cds/mpc8541cds/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/pci.o (.text)
     common/dlmalloc.o (.text)
diff --git a/board/cds/mpc8548cds/u-boot.lds b/board/cds/mpc8548cds/u-boot.lds
index 530ba5a721de26669b2de97e81697f03c5191c94..b19c481a96af3e1325b1f2a4d064859ad99d5cf6 100644
--- a/board/cds/mpc8548cds/u-boot.lds
+++ b/board/cds/mpc8548cds/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     common/dlmalloc.o (.text)
     lib_generic/crc32.o (.text)
diff --git a/board/cds/mpc8555cds/u-boot.lds b/board/cds/mpc8555cds/u-boot.lds
index 9285928dc428d89171745c1701628cb566dd0c7c..de0923a0d8b1e60c9104bf13292c9409a0fc036d 100644
--- a/board/cds/mpc8555cds/u-boot.lds
+++ b/board/cds/mpc8555cds/u-boot.lds
@@ -69,7 +69,7 @@ SECTIONS
     cpu/mpc85xx/interrupts.o (.text)
     cpu/mpc85xx/cpu_init.o (.text)
     cpu/mpc85xx/cpu.o (.text)
-    drivers/tsec.o (.text)
+    drivers/net/tsec.o (.text)
     cpu/mpc85xx/speed.o (.text)
     cpu/mpc85xx/pci.o (.text)
     common/dlmalloc.o (.text)
diff --git a/board/mpl/vcma9/cmd_vcma9.c b/board/mpl/vcma9/cmd_vcma9.c
index 227c49272cef347b406202c658b1a3f53734a66a..90a1b08e24996955ecf0e5ec23e27fbfb37de022 100644
--- a/board/mpl/vcma9/cmd_vcma9.c
+++ b/board/mpl/vcma9/cmd_vcma9.c
@@ -31,7 +31,7 @@
 #include "../common/common_util.h"
 
 #if defined(CONFIG_DRIVER_CS8900)
-#include <../drivers/cs8900.h>
+#include <../drivers/net/cs8900.h>
 
 static uchar cs8900_chksum(ushort data)
 {
diff --git a/board/netstar/eeprom.c b/board/netstar/eeprom.c
index fef3822aae2c2a9206e7b4a72b3799651f185a7c..0de594b65f27161b33039e22aa311bd6446d5dc4 100644
--- a/board/netstar/eeprom.c
+++ b/board/netstar/eeprom.c
@@ -26,7 +26,7 @@
 
 #include <common.h>
 #include <exports.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 
diff --git a/board/voiceblue/eeprom.c b/board/voiceblue/eeprom.c
index 0ad1b666b917baf9dca15c1a51eb51a998cec447..d8ea6e5731c32d172f043fd3622349473c1cd639 100644
--- a/board/voiceblue/eeprom.c
+++ b/board/voiceblue/eeprom.c
@@ -26,7 +26,7 @@
 
 #include <common.h>
 #include <exports.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 
diff --git a/drivers/Makefile b/drivers/Makefile
deleted file mode 100755
index 480b3581f642726d082d80338ab5d12472d67d3d..0000000000000000000000000000000000000000
--- a/drivers/Makefile
+++ /dev/null
@@ -1,162 +0,0 @@
-#
-# (C) Copyright 2000-2007
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# See file CREDITS for list of people who contributed to this
-# project.
-#
-# 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 $(TOPDIR)/config.mk
-
-# CFLAGS += -DET_DEBUG -DDEBUG
-
-LIB	= $(obj)libdrivers.a
-
-COBJS-y += ali512x.o
-COBJS-y += ds1722.o
-COBJS-y += ns87308.o
-COBJS-y += status_led.o
-
-#
-# Block and Flash Drivers
-#
-COBJS-y += ahci.o
-COBJS-y += at45.o
-COBJS-y += ata_piix.o
-COBJS-y += cfi_flash.o
-COBJS-y += dataflash.o
-COBJS-y += mw_eeprom.o
-COBJS-y += sil680.o
-COBJS-y += sym53c8xx.o
-COBJS-y += systemace.o
-
-#
-# Console Drivers
-#
-COBJS-y += ati_radeon_fb.o
-COBJS-y += atmel_usart.o
-COBJS-y += cfb_console.o
-COBJS-y += ct69000.o
-COBJS-y += i8042.o
-COBJS-y += keyboard.o
-COBJS-y += netconsole.o
-COBJS-y += ns16550.o
-COBJS-y += pc_keyb.o
-COBJS-y += ps2ser.o
-COBJS-y += ps2mult.o
-COBJS-y += s3c4510b_uart.o
-COBJS-y += sed13806.o
-COBJS-y += sed156x.o
-COBJS-y += serial.o
-COBJS-y += serial_max3100.o
-COBJS-y += serial_xuartlite.o
-COBJS-y += sm501.o
-COBJS-y += smiLynxEM.o
-COBJS-y += usbtty.o
-COBJS-y += videomodes.o
-
-#
-# I2C Drivers
-#
-COBJS-y += omap1510_i2c.o
-COBJS-y += omap24xx_i2c.o
-COBJS-y += tsi108_i2c.o
-COBJS-y += fsl_i2c.o
-
-#
-# Network Drivers
-#
-COBJS-y += 3c589.o
-COBJS-y += bcm570x.o bcm570x_autoneg.o 5701rls.o
-COBJS-y += cs8900.o
-COBJS-y += dc2114x.o
-COBJS-y += dm9000x.o
-COBJS-y += e1000.o
-COBJS-y += eepro100.o
-COBJS-y += enc28j60.o
-COBJS-y += inca-ip_sw.o
-COBJS-y += ks8695eth.o
-COBJS-y += lan91c96.o
-COBJS-y += macb.o
-COBJS-y += natsemi.o
-COBJS-y += ne2000.o
-COBJS-y += netarm_eth.o
-COBJS-y += ns7520_eth.o
-COBJS-y += ns8382x.o
-COBJS-y += pcnet.o
-COBJS-y += plb2800_eth.o
-COBJS-y += rtl8019.o
-COBJS-y += rtl8139.o
-COBJS-y += rtl8169.o
-COBJS-y += s3c4510b_eth.o
-COBJS-y += smc91111.o
-COBJS-y += tigon3.o
-COBJS-y += tsec.o
-COBJS-y += tsi108_eth.o
-COBJS-y += uli526x.o
-
-#
-# PCI/PCMCIA device drivers
-#
-COBJS-y += fsl_pci_init.o
-COBJS-y += mpc8xx_pcmcia.o
-COBJS-y += pci.o
-COBJS-y += pci_auto.o
-COBJS-y += pci_indirect.o
-COBJS-y += pxa_pcmcia.o
-COBJS-y += rpx_pcmcia.o
-COBJS-y += ti_pci1410a.o
-COBJS-y += tqm8xx_pcmcia.o
-COBJS-y += tsi108_pci.o
-COBJS-y += w83c553f.o
-
-#
-# USB Drivers
-#
-COBJS-y += isp116x-hcd.o
-COBJS-y += sl811_usb.o
-COBJS-y += usb_ohci.o
-COBJS-y += usbdcore.o
-COBJS-y += usbdcore_ep0.o
-COBJS-y += usbdcore_mpc8xx.o
-COBJS-y += usbdcore_omap1510.o
-
-#
-# Miscellaneous Drivers
-#
-COBJS-y += ali512x.o
-COBJS-y += ns87308.o
-COBJS-y += status_led.o
-
-COBJS	:= $(COBJS-y)
-SRCS	:= $(COBJS:.o=.c)
-OBJS	:= $(addprefix $(obj),$(COBJS))
-
-all:	$(LIB)
-
-$(LIB): $(obj).depend $(OBJS)
-	$(AR) $(ARFLAGS) $@ $(OBJS)
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
diff --git a/drivers/block/Makefile b/drivers/block/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e069969e680d32c0bbfe705997c84247e2f1a1ae
--- /dev/null
+++ b/drivers/block/Makefile
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libblock.a
+
+COBJS-y += ahci.o
+COBJS-y += ata_piix.o
+COBJS-y += sil680.o
+COBJS-y += sym53c8xx.o
+COBJS-y += systemace.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/ahci.c b/drivers/block/ahci.c
similarity index 100%
rename from drivers/ahci.c
rename to drivers/block/ahci.c
diff --git a/drivers/ata_piix.c b/drivers/block/ata_piix.c
similarity index 100%
rename from drivers/ata_piix.c
rename to drivers/block/ata_piix.c
diff --git a/drivers/sil680.c b/drivers/block/sil680.c
similarity index 100%
rename from drivers/sil680.c
rename to drivers/block/sil680.c
diff --git a/drivers/sym53c8xx.c b/drivers/block/sym53c8xx.c
similarity index 100%
rename from drivers/sym53c8xx.c
rename to drivers/block/sym53c8xx.c
diff --git a/drivers/systemace.c b/drivers/block/systemace.c
similarity index 100%
rename from drivers/systemace.c
rename to drivers/block/systemace.c
diff --git a/dtt/Makefile b/drivers/hwmon/Makefile
similarity index 97%
rename from dtt/Makefile
rename to drivers/hwmon/Makefile
index 72e5c88bd4f68f7c19626f375062090a805eb879..cebb2ba6353dfc328b5e5fb6692b9af08ced4ee4 100644
--- a/dtt/Makefile
+++ b/drivers/hwmon/Makefile
@@ -28,13 +28,14 @@ include $(TOPDIR)/config.mk
 
 #CFLAGS += -DDEBUG
 
-LIB	= $(obj)libdtt.a
+LIB	= $(obj)libhwmon.a
 
-COBJS-y += lm75.o
-COBJS-y += ds1621.o
 COBJS-y += adm1021.o
-COBJS-y += lm81.o
+COBJS-y += ds1621.o
+COBJS-y += ds1722.o
 COBJS-y += ds1775.o
+COBJS-y += lm75.o
+COBJS-y += lm81.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
diff --git a/dtt/adm1021.c b/drivers/hwmon/adm1021.c
similarity index 100%
rename from dtt/adm1021.c
rename to drivers/hwmon/adm1021.c
diff --git a/dtt/ds1621.c b/drivers/hwmon/ds1621.c
similarity index 100%
rename from dtt/ds1621.c
rename to drivers/hwmon/ds1621.c
diff --git a/drivers/ds1722.c b/drivers/hwmon/ds1722.c
similarity index 100%
rename from drivers/ds1722.c
rename to drivers/hwmon/ds1722.c
diff --git a/dtt/ds1775.c b/drivers/hwmon/ds1775.c
similarity index 100%
rename from dtt/ds1775.c
rename to drivers/hwmon/ds1775.c
diff --git a/dtt/lm75.c b/drivers/hwmon/lm75.c
similarity index 100%
rename from dtt/lm75.c
rename to drivers/hwmon/lm75.c
diff --git a/dtt/lm81.c b/drivers/hwmon/lm81.c
similarity index 100%
rename from dtt/lm81.c
rename to drivers/hwmon/lm81.c
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..29d6c03dbb3e43bf36eb70eb83fd1cc37bae1432
--- /dev/null
+++ b/drivers/i2c/Makefile
@@ -0,0 +1,49 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libi2c.a
+
+COBJS-y += fsl_i2c.o
+COBJS-y += omap1510_i2c.o
+COBJS-y += omap24xx_i2c.o
+COBJS-y += tsi108_i2c.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/fsl_i2c.c b/drivers/i2c/fsl_i2c.c
similarity index 100%
rename from drivers/fsl_i2c.c
rename to drivers/i2c/fsl_i2c.c
diff --git a/drivers/omap1510_i2c.c b/drivers/i2c/omap1510_i2c.c
similarity index 100%
rename from drivers/omap1510_i2c.c
rename to drivers/i2c/omap1510_i2c.c
diff --git a/drivers/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c
similarity index 100%
rename from drivers/omap24xx_i2c.c
rename to drivers/i2c/omap24xx_i2c.c
diff --git a/drivers/tsi108_i2c.c b/drivers/i2c/tsi108_i2c.c
similarity index 100%
rename from drivers/tsi108_i2c.c
rename to drivers/i2c/tsi108_i2c.c
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..df22cf9c6dfa30b786c5f2b51c12f0684ee53f6b
--- /dev/null
+++ b/drivers/input/Makefile
@@ -0,0 +1,48 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libinput.a
+
+COBJS-y += i8042.o
+COBJS-y += keyboard.o
+COBJS-y += pc_keyb.o ps2ser.o ps2mult.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/i8042.c b/drivers/input/i8042.c
similarity index 100%
rename from drivers/i8042.c
rename to drivers/input/i8042.c
diff --git a/drivers/keyboard.c b/drivers/input/keyboard.c
similarity index 100%
rename from drivers/keyboard.c
rename to drivers/input/keyboard.c
diff --git a/drivers/pc_keyb.c b/drivers/input/pc_keyb.c
similarity index 100%
rename from drivers/pc_keyb.c
rename to drivers/input/pc_keyb.c
diff --git a/drivers/ps2mult.c b/drivers/input/ps2mult.c
similarity index 100%
rename from drivers/ps2mult.c
rename to drivers/input/ps2mult.c
diff --git a/drivers/ps2ser.c b/drivers/input/ps2ser.c
similarity index 100%
rename from drivers/ps2ser.c
rename to drivers/input/ps2ser.c
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..78cec21fba31f6882daa7626a28bcba2957df789
--- /dev/null
+++ b/drivers/misc/Makefile
@@ -0,0 +1,48 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libmisc.a
+
+COBJS-y += ali512x.o
+COBJS-y += ns87308.o
+COBJS-y += status_led.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/ali512x.c b/drivers/misc/ali512x.c
similarity index 100%
rename from drivers/ali512x.c
rename to drivers/misc/ali512x.c
diff --git a/drivers/ns87308.c b/drivers/misc/ns87308.c
similarity index 100%
rename from drivers/ns87308.c
rename to drivers/misc/ns87308.c
diff --git a/drivers/status_led.c b/drivers/misc/status_led.c
similarity index 100%
rename from drivers/status_led.c
rename to drivers/misc/status_led.c
diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..95c5e02af9f6a88379c040df124cec6477223cf7
--- /dev/null
+++ b/drivers/mtd/Makefile
@@ -0,0 +1,49 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libmtd.a
+
+COBJS-y += at45.o
+COBJS-y += cfi_flash.o
+COBJS-y += dataflash.o
+COBJS-y += mw_eeprom.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/at45.c b/drivers/mtd/at45.c
similarity index 100%
rename from drivers/at45.c
rename to drivers/mtd/at45.c
diff --git a/drivers/cfi_flash.c b/drivers/mtd/cfi_flash.c
similarity index 100%
rename from drivers/cfi_flash.c
rename to drivers/mtd/cfi_flash.c
diff --git a/drivers/dataflash.c b/drivers/mtd/dataflash.c
similarity index 100%
rename from drivers/dataflash.c
rename to drivers/mtd/dataflash.c
diff --git a/drivers/mw_eeprom.c b/drivers/mtd/mw_eeprom.c
similarity index 100%
rename from drivers/mw_eeprom.c
rename to drivers/mtd/mw_eeprom.c
diff --git a/drivers/nand/Makefile b/drivers/mtd/nand/Makefile
similarity index 100%
rename from drivers/nand/Makefile
rename to drivers/mtd/nand/Makefile
diff --git a/drivers/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c
similarity index 100%
rename from drivers/nand/diskonchip.c
rename to drivers/mtd/nand/diskonchip.c
diff --git a/drivers/nand/nand.c b/drivers/mtd/nand/nand.c
similarity index 100%
rename from drivers/nand/nand.c
rename to drivers/mtd/nand/nand.c
diff --git a/drivers/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
similarity index 100%
rename from drivers/nand/nand_base.c
rename to drivers/mtd/nand/nand_base.c
diff --git a/drivers/nand/nand_bbt.c b/drivers/mtd/nand/nand_bbt.c
similarity index 100%
rename from drivers/nand/nand_bbt.c
rename to drivers/mtd/nand/nand_bbt.c
diff --git a/drivers/nand/nand_ecc.c b/drivers/mtd/nand/nand_ecc.c
similarity index 100%
rename from drivers/nand/nand_ecc.c
rename to drivers/mtd/nand/nand_ecc.c
diff --git a/drivers/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
similarity index 100%
rename from drivers/nand/nand_ids.c
rename to drivers/mtd/nand/nand_ids.c
diff --git a/drivers/nand/nand_util.c b/drivers/mtd/nand/nand_util.c
similarity index 100%
rename from drivers/nand/nand_util.c
rename to drivers/mtd/nand/nand_util.c
diff --git a/drivers/nand_legacy/Makefile b/drivers/mtd/nand_legacy/Makefile
similarity index 100%
rename from drivers/nand_legacy/Makefile
rename to drivers/mtd/nand_legacy/Makefile
diff --git a/drivers/nand_legacy/nand_legacy.c b/drivers/mtd/nand_legacy/nand_legacy.c
similarity index 100%
rename from drivers/nand_legacy/nand_legacy.c
rename to drivers/mtd/nand_legacy/nand_legacy.c
diff --git a/drivers/onenand/Makefile b/drivers/mtd/onenand/Makefile
similarity index 100%
rename from drivers/onenand/Makefile
rename to drivers/mtd/onenand/Makefile
diff --git a/drivers/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
similarity index 100%
rename from drivers/onenand/onenand_base.c
rename to drivers/mtd/onenand/onenand_base.c
diff --git a/drivers/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c
similarity index 100%
rename from drivers/onenand/onenand_bbt.c
rename to drivers/mtd/onenand/onenand_bbt.c
diff --git a/drivers/3c589.c b/drivers/net/3c589.c
similarity index 100%
rename from drivers/3c589.c
rename to drivers/net/3c589.c
diff --git a/drivers/3c589.h b/drivers/net/3c589.h
similarity index 100%
rename from drivers/3c589.h
rename to drivers/net/3c589.h
diff --git a/drivers/5701rls.c b/drivers/net/5701rls.c
similarity index 100%
rename from drivers/5701rls.c
rename to drivers/net/5701rls.c
diff --git a/drivers/5701rls.h b/drivers/net/5701rls.h
similarity index 100%
rename from drivers/5701rls.h
rename to drivers/net/5701rls.h
diff --git a/drivers/8390.h b/drivers/net/8390.h
similarity index 100%
rename from drivers/8390.h
rename to drivers/net/8390.h
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 37d69b9949bd94d6a97d272f32c6cc626d8b6a99..41e1bdeb3bc227513581b66dbc3170d26e3255ce 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -25,8 +25,39 @@ include $(TOPDIR)/config.mk
 
 LIB 	:= $(obj)libnet.a
 
-COBJS 	:= mcffec.o
+COBJS-y += 3c589.o
+COBJS-y += bcm570x.o bcm570x_autoneg.o 5701rls.o
+COBJS-y += cs8900.o
+COBJS-y += dc2114x.o
+COBJS-y += dm9000x.o
+COBJS-y += e1000.o
+COBJS-y += eepro100.o
+COBJS-y += enc28j60.o
+COBJS-y += inca-ip_sw.o
+COBJS-y += ks8695eth.o
+COBJS-y += lan91c96.o
+COBJS-y += macb.o
+COBJS-y += mcffec.o
+COBJS-y += natsemi.o
+COBJS-y += ne2000.o
+COBJS-y += netarm_eth.o
+COBJS-y += netconsole.o
+COBJS-y += ns7520_eth.o
+COBJS-y += ns8382x.o
+COBJS-y += ns9750_eth.o
+COBJS-y += pcnet.o
+COBJS-y += plb2800_eth.o
+COBJS-y += rtl8019.o
+COBJS-y += rtl8139.o
+COBJS-y += rtl8169.o
+COBJS-y += s3c4510b_eth.o
+COBJS-y += smc91111.o
+COBJS-y += tigon3.o
+COBJS-y += tsec.o
+COBJS-y += tsi108_eth.o
+COBJS-y += uli526x.o
 
+COBJS	:= $(COBJS-y)
 SRCS 	:= $(COBJS:.o=.c)
 OBJS 	:= $(addprefix $(obj),$(COBJS))
 
diff --git a/drivers/bcm570x.c b/drivers/net/bcm570x.c
similarity index 100%
rename from drivers/bcm570x.c
rename to drivers/net/bcm570x.c
diff --git a/drivers/bcm570x_autoneg.c b/drivers/net/bcm570x_autoneg.c
similarity index 100%
rename from drivers/bcm570x_autoneg.c
rename to drivers/net/bcm570x_autoneg.c
diff --git a/drivers/bcm570x_autoneg.h b/drivers/net/bcm570x_autoneg.h
similarity index 100%
rename from drivers/bcm570x_autoneg.h
rename to drivers/net/bcm570x_autoneg.h
diff --git a/drivers/bcm570x_bits.h b/drivers/net/bcm570x_bits.h
similarity index 100%
rename from drivers/bcm570x_bits.h
rename to drivers/net/bcm570x_bits.h
diff --git a/drivers/bcm570x_debug.h b/drivers/net/bcm570x_debug.h
similarity index 100%
rename from drivers/bcm570x_debug.h
rename to drivers/net/bcm570x_debug.h
diff --git a/drivers/bcm570x_lm.h b/drivers/net/bcm570x_lm.h
similarity index 100%
rename from drivers/bcm570x_lm.h
rename to drivers/net/bcm570x_lm.h
diff --git a/drivers/bcm570x_mm.h b/drivers/net/bcm570x_mm.h
similarity index 100%
rename from drivers/bcm570x_mm.h
rename to drivers/net/bcm570x_mm.h
diff --git a/drivers/bcm570x_queue.h b/drivers/net/bcm570x_queue.h
similarity index 100%
rename from drivers/bcm570x_queue.h
rename to drivers/net/bcm570x_queue.h
diff --git a/drivers/cs8900.c b/drivers/net/cs8900.c
similarity index 100%
rename from drivers/cs8900.c
rename to drivers/net/cs8900.c
diff --git a/drivers/cs8900.h b/drivers/net/cs8900.h
similarity index 100%
rename from drivers/cs8900.h
rename to drivers/net/cs8900.h
diff --git a/drivers/dc2114x.c b/drivers/net/dc2114x.c
similarity index 100%
rename from drivers/dc2114x.c
rename to drivers/net/dc2114x.c
diff --git a/drivers/dm9000x.c b/drivers/net/dm9000x.c
similarity index 100%
rename from drivers/dm9000x.c
rename to drivers/net/dm9000x.c
diff --git a/drivers/dm9000x.h b/drivers/net/dm9000x.h
similarity index 100%
rename from drivers/dm9000x.h
rename to drivers/net/dm9000x.h
diff --git a/drivers/e1000.c b/drivers/net/e1000.c
similarity index 100%
rename from drivers/e1000.c
rename to drivers/net/e1000.c
diff --git a/drivers/e1000.h b/drivers/net/e1000.h
similarity index 100%
rename from drivers/e1000.h
rename to drivers/net/e1000.h
diff --git a/drivers/eepro100.c b/drivers/net/eepro100.c
similarity index 100%
rename from drivers/eepro100.c
rename to drivers/net/eepro100.c
diff --git a/drivers/enc28j60.c b/drivers/net/enc28j60.c
similarity index 100%
rename from drivers/enc28j60.c
rename to drivers/net/enc28j60.c
diff --git a/drivers/inca-ip_sw.c b/drivers/net/inca-ip_sw.c
similarity index 100%
rename from drivers/inca-ip_sw.c
rename to drivers/net/inca-ip_sw.c
diff --git a/drivers/ks8695eth.c b/drivers/net/ks8695eth.c
similarity index 100%
rename from drivers/ks8695eth.c
rename to drivers/net/ks8695eth.c
diff --git a/drivers/lan91c96.c b/drivers/net/lan91c96.c
similarity index 100%
rename from drivers/lan91c96.c
rename to drivers/net/lan91c96.c
diff --git a/drivers/lan91c96.h b/drivers/net/lan91c96.h
similarity index 100%
rename from drivers/lan91c96.h
rename to drivers/net/lan91c96.h
diff --git a/drivers/macb.c b/drivers/net/macb.c
similarity index 100%
rename from drivers/macb.c
rename to drivers/net/macb.c
diff --git a/drivers/macb.h b/drivers/net/macb.h
similarity index 100%
rename from drivers/macb.h
rename to drivers/net/macb.h
diff --git a/drivers/natsemi.c b/drivers/net/natsemi.c
similarity index 100%
rename from drivers/natsemi.c
rename to drivers/net/natsemi.c
diff --git a/drivers/ne2000.c b/drivers/net/ne2000.c
similarity index 100%
rename from drivers/ne2000.c
rename to drivers/net/ne2000.c
diff --git a/drivers/ne2000.h b/drivers/net/ne2000.h
similarity index 100%
rename from drivers/ne2000.h
rename to drivers/net/ne2000.h
diff --git a/drivers/netarm_eth.c b/drivers/net/netarm_eth.c
similarity index 100%
rename from drivers/netarm_eth.c
rename to drivers/net/netarm_eth.c
diff --git a/drivers/netarm_eth.h b/drivers/net/netarm_eth.h
similarity index 100%
rename from drivers/netarm_eth.h
rename to drivers/net/netarm_eth.h
diff --git a/drivers/netconsole.c b/drivers/net/netconsole.c
similarity index 100%
rename from drivers/netconsole.c
rename to drivers/net/netconsole.c
diff --git a/drivers/nicext.h b/drivers/net/nicext.h
similarity index 100%
rename from drivers/nicext.h
rename to drivers/net/nicext.h
diff --git a/drivers/ns7520_eth.c b/drivers/net/ns7520_eth.c
similarity index 100%
rename from drivers/ns7520_eth.c
rename to drivers/net/ns7520_eth.c
diff --git a/drivers/ns8382x.c b/drivers/net/ns8382x.c
similarity index 100%
rename from drivers/ns8382x.c
rename to drivers/net/ns8382x.c
diff --git a/drivers/ns9750_eth.c b/drivers/net/ns9750_eth.c
similarity index 100%
rename from drivers/ns9750_eth.c
rename to drivers/net/ns9750_eth.c
diff --git a/drivers/pcnet.c b/drivers/net/pcnet.c
similarity index 100%
rename from drivers/pcnet.c
rename to drivers/net/pcnet.c
diff --git a/drivers/plb2800_eth.c b/drivers/net/plb2800_eth.c
similarity index 100%
rename from drivers/plb2800_eth.c
rename to drivers/net/plb2800_eth.c
diff --git a/drivers/rtl8019.c b/drivers/net/rtl8019.c
similarity index 100%
rename from drivers/rtl8019.c
rename to drivers/net/rtl8019.c
diff --git a/drivers/rtl8019.h b/drivers/net/rtl8019.h
similarity index 100%
rename from drivers/rtl8019.h
rename to drivers/net/rtl8019.h
diff --git a/drivers/rtl8139.c b/drivers/net/rtl8139.c
similarity index 100%
rename from drivers/rtl8139.c
rename to drivers/net/rtl8139.c
diff --git a/drivers/rtl8169.c b/drivers/net/rtl8169.c
similarity index 100%
rename from drivers/rtl8169.c
rename to drivers/net/rtl8169.c
diff --git a/drivers/s3c4510b_eth.c b/drivers/net/s3c4510b_eth.c
similarity index 100%
rename from drivers/s3c4510b_eth.c
rename to drivers/net/s3c4510b_eth.c
diff --git a/drivers/s3c4510b_eth.h b/drivers/net/s3c4510b_eth.h
similarity index 100%
rename from drivers/s3c4510b_eth.h
rename to drivers/net/s3c4510b_eth.h
diff --git a/drivers/sk98lin/Makefile b/drivers/net/sk98lin/Makefile
similarity index 100%
rename from drivers/sk98lin/Makefile
rename to drivers/net/sk98lin/Makefile
diff --git a/drivers/sk98lin/h/lm80.h b/drivers/net/sk98lin/h/lm80.h
similarity index 100%
rename from drivers/sk98lin/h/lm80.h
rename to drivers/net/sk98lin/h/lm80.h
diff --git a/drivers/sk98lin/h/skaddr.h b/drivers/net/sk98lin/h/skaddr.h
similarity index 100%
rename from drivers/sk98lin/h/skaddr.h
rename to drivers/net/sk98lin/h/skaddr.h
diff --git a/drivers/sk98lin/h/skcsum.h b/drivers/net/sk98lin/h/skcsum.h
similarity index 100%
rename from drivers/sk98lin/h/skcsum.h
rename to drivers/net/sk98lin/h/skcsum.h
diff --git a/drivers/sk98lin/h/skdebug.h b/drivers/net/sk98lin/h/skdebug.h
similarity index 100%
rename from drivers/sk98lin/h/skdebug.h
rename to drivers/net/sk98lin/h/skdebug.h
diff --git a/drivers/sk98lin/h/skdrv1st.h b/drivers/net/sk98lin/h/skdrv1st.h
similarity index 100%
rename from drivers/sk98lin/h/skdrv1st.h
rename to drivers/net/sk98lin/h/skdrv1st.h
diff --git a/drivers/sk98lin/h/skdrv2nd.h b/drivers/net/sk98lin/h/skdrv2nd.h
similarity index 100%
rename from drivers/sk98lin/h/skdrv2nd.h
rename to drivers/net/sk98lin/h/skdrv2nd.h
diff --git a/drivers/sk98lin/h/skerror.h b/drivers/net/sk98lin/h/skerror.h
similarity index 100%
rename from drivers/sk98lin/h/skerror.h
rename to drivers/net/sk98lin/h/skerror.h
diff --git a/drivers/sk98lin/h/skgedrv.h b/drivers/net/sk98lin/h/skgedrv.h
similarity index 100%
rename from drivers/sk98lin/h/skgedrv.h
rename to drivers/net/sk98lin/h/skgedrv.h
diff --git a/drivers/sk98lin/h/skgehw.h b/drivers/net/sk98lin/h/skgehw.h
similarity index 100%
rename from drivers/sk98lin/h/skgehw.h
rename to drivers/net/sk98lin/h/skgehw.h
diff --git a/drivers/sk98lin/h/skgehwt.h b/drivers/net/sk98lin/h/skgehwt.h
similarity index 100%
rename from drivers/sk98lin/h/skgehwt.h
rename to drivers/net/sk98lin/h/skgehwt.h
diff --git a/drivers/sk98lin/h/skgei2c.h b/drivers/net/sk98lin/h/skgei2c.h
similarity index 100%
rename from drivers/sk98lin/h/skgei2c.h
rename to drivers/net/sk98lin/h/skgei2c.h
diff --git a/drivers/sk98lin/h/skgeinit.h b/drivers/net/sk98lin/h/skgeinit.h
similarity index 100%
rename from drivers/sk98lin/h/skgeinit.h
rename to drivers/net/sk98lin/h/skgeinit.h
diff --git a/drivers/sk98lin/h/skgepnm2.h b/drivers/net/sk98lin/h/skgepnm2.h
similarity index 100%
rename from drivers/sk98lin/h/skgepnm2.h
rename to drivers/net/sk98lin/h/skgepnm2.h
diff --git a/drivers/sk98lin/h/skgepnmi.h b/drivers/net/sk98lin/h/skgepnmi.h
similarity index 100%
rename from drivers/sk98lin/h/skgepnmi.h
rename to drivers/net/sk98lin/h/skgepnmi.h
diff --git a/drivers/sk98lin/h/skgesirq.h b/drivers/net/sk98lin/h/skgesirq.h
similarity index 100%
rename from drivers/sk98lin/h/skgesirq.h
rename to drivers/net/sk98lin/h/skgesirq.h
diff --git a/drivers/sk98lin/h/ski2c.h b/drivers/net/sk98lin/h/ski2c.h
similarity index 100%
rename from drivers/sk98lin/h/ski2c.h
rename to drivers/net/sk98lin/h/ski2c.h
diff --git a/drivers/sk98lin/h/skqueue.h b/drivers/net/sk98lin/h/skqueue.h
similarity index 100%
rename from drivers/sk98lin/h/skqueue.h
rename to drivers/net/sk98lin/h/skqueue.h
diff --git a/drivers/sk98lin/h/skrlmt.h b/drivers/net/sk98lin/h/skrlmt.h
similarity index 100%
rename from drivers/sk98lin/h/skrlmt.h
rename to drivers/net/sk98lin/h/skrlmt.h
diff --git a/drivers/sk98lin/h/sktimer.h b/drivers/net/sk98lin/h/sktimer.h
similarity index 100%
rename from drivers/sk98lin/h/sktimer.h
rename to drivers/net/sk98lin/h/sktimer.h
diff --git a/drivers/sk98lin/h/sktypes.h b/drivers/net/sk98lin/h/sktypes.h
similarity index 100%
rename from drivers/sk98lin/h/sktypes.h
rename to drivers/net/sk98lin/h/sktypes.h
diff --git a/drivers/sk98lin/h/skversion.h b/drivers/net/sk98lin/h/skversion.h
similarity index 100%
rename from drivers/sk98lin/h/skversion.h
rename to drivers/net/sk98lin/h/skversion.h
diff --git a/drivers/sk98lin/h/skvpd.h b/drivers/net/sk98lin/h/skvpd.h
similarity index 100%
rename from drivers/sk98lin/h/skvpd.h
rename to drivers/net/sk98lin/h/skvpd.h
diff --git a/drivers/sk98lin/h/xmac_ii.h b/drivers/net/sk98lin/h/xmac_ii.h
similarity index 100%
rename from drivers/sk98lin/h/xmac_ii.h
rename to drivers/net/sk98lin/h/xmac_ii.h
diff --git a/drivers/sk98lin/skaddr.c b/drivers/net/sk98lin/skaddr.c
similarity index 100%
rename from drivers/sk98lin/skaddr.c
rename to drivers/net/sk98lin/skaddr.c
diff --git a/drivers/sk98lin/skcsum.c b/drivers/net/sk98lin/skcsum.c
similarity index 100%
rename from drivers/sk98lin/skcsum.c
rename to drivers/net/sk98lin/skcsum.c
diff --git a/drivers/sk98lin/skge.c b/drivers/net/sk98lin/skge.c
similarity index 100%
rename from drivers/sk98lin/skge.c
rename to drivers/net/sk98lin/skge.c
diff --git a/drivers/sk98lin/skgehwt.c b/drivers/net/sk98lin/skgehwt.c
similarity index 100%
rename from drivers/sk98lin/skgehwt.c
rename to drivers/net/sk98lin/skgehwt.c
diff --git a/drivers/sk98lin/skgeinit.c b/drivers/net/sk98lin/skgeinit.c
similarity index 100%
rename from drivers/sk98lin/skgeinit.c
rename to drivers/net/sk98lin/skgeinit.c
diff --git a/drivers/sk98lin/skgemib.c b/drivers/net/sk98lin/skgemib.c
similarity index 100%
rename from drivers/sk98lin/skgemib.c
rename to drivers/net/sk98lin/skgemib.c
diff --git a/drivers/sk98lin/skgepnmi.c b/drivers/net/sk98lin/skgepnmi.c
similarity index 100%
rename from drivers/sk98lin/skgepnmi.c
rename to drivers/net/sk98lin/skgepnmi.c
diff --git a/drivers/sk98lin/skgesirq.c b/drivers/net/sk98lin/skgesirq.c
similarity index 100%
rename from drivers/sk98lin/skgesirq.c
rename to drivers/net/sk98lin/skgesirq.c
diff --git a/drivers/sk98lin/ski2c.c b/drivers/net/sk98lin/ski2c.c
similarity index 100%
rename from drivers/sk98lin/ski2c.c
rename to drivers/net/sk98lin/ski2c.c
diff --git a/drivers/sk98lin/sklm80.c b/drivers/net/sk98lin/sklm80.c
similarity index 100%
rename from drivers/sk98lin/sklm80.c
rename to drivers/net/sk98lin/sklm80.c
diff --git a/drivers/sk98lin/skproc.c b/drivers/net/sk98lin/skproc.c
similarity index 100%
rename from drivers/sk98lin/skproc.c
rename to drivers/net/sk98lin/skproc.c
diff --git a/drivers/sk98lin/skqueue.c b/drivers/net/sk98lin/skqueue.c
similarity index 100%
rename from drivers/sk98lin/skqueue.c
rename to drivers/net/sk98lin/skqueue.c
diff --git a/drivers/sk98lin/skrlmt.c b/drivers/net/sk98lin/skrlmt.c
similarity index 100%
rename from drivers/sk98lin/skrlmt.c
rename to drivers/net/sk98lin/skrlmt.c
diff --git a/drivers/sk98lin/sktimer.c b/drivers/net/sk98lin/sktimer.c
similarity index 100%
rename from drivers/sk98lin/sktimer.c
rename to drivers/net/sk98lin/sktimer.c
diff --git a/drivers/sk98lin/skvpd.c b/drivers/net/sk98lin/skvpd.c
similarity index 100%
rename from drivers/sk98lin/skvpd.c
rename to drivers/net/sk98lin/skvpd.c
diff --git a/drivers/sk98lin/skxmac2.c b/drivers/net/sk98lin/skxmac2.c
similarity index 100%
rename from drivers/sk98lin/skxmac2.c
rename to drivers/net/sk98lin/skxmac2.c
diff --git a/drivers/sk98lin/u-boot_compat.h b/drivers/net/sk98lin/u-boot_compat.h
similarity index 100%
rename from drivers/sk98lin/u-boot_compat.h
rename to drivers/net/sk98lin/u-boot_compat.h
diff --git a/drivers/sk98lin/uboot_drv.c b/drivers/net/sk98lin/uboot_drv.c
similarity index 100%
rename from drivers/sk98lin/uboot_drv.c
rename to drivers/net/sk98lin/uboot_drv.c
diff --git a/drivers/sk98lin/uboot_skb.c b/drivers/net/sk98lin/uboot_skb.c
similarity index 100%
rename from drivers/sk98lin/uboot_skb.c
rename to drivers/net/sk98lin/uboot_skb.c
diff --git a/drivers/smc91111.c b/drivers/net/smc91111.c
similarity index 100%
rename from drivers/smc91111.c
rename to drivers/net/smc91111.c
diff --git a/drivers/smc91111.h b/drivers/net/smc91111.h
similarity index 100%
rename from drivers/smc91111.h
rename to drivers/net/smc91111.h
diff --git a/drivers/tigon3.c b/drivers/net/tigon3.c
similarity index 100%
rename from drivers/tigon3.c
rename to drivers/net/tigon3.c
diff --git a/drivers/tigon3.h b/drivers/net/tigon3.h
similarity index 100%
rename from drivers/tigon3.h
rename to drivers/net/tigon3.h
diff --git a/drivers/tsec.c b/drivers/net/tsec.c
similarity index 100%
rename from drivers/tsec.c
rename to drivers/net/tsec.c
diff --git a/drivers/tsec.h b/drivers/net/tsec.h
similarity index 100%
rename from drivers/tsec.h
rename to drivers/net/tsec.h
diff --git a/drivers/tsi108_eth.c b/drivers/net/tsi108_eth.c
similarity index 100%
rename from drivers/tsi108_eth.c
rename to drivers/net/tsi108_eth.c
diff --git a/drivers/uli526x.c b/drivers/net/uli526x.c
similarity index 100%
rename from drivers/uli526x.c
rename to drivers/net/uli526x.c
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..fe45839466162b36d54a560ae1e8aa2694a8b149
--- /dev/null
+++ b/drivers/pci/Makefile
@@ -0,0 +1,51 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libpci.a
+
+COBJS-y += fsl_pci_init.o
+COBJS-y += pci.o
+COBJS-y += pci_auto.o
+COBJS-y += pci_indirect.o
+COBJS-y += tsi108_pci.o
+COBJS-y += w83c553f.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
similarity index 100%
rename from drivers/fsl_pci_init.c
rename to drivers/pci/fsl_pci_init.c
diff --git a/drivers/pci.c b/drivers/pci/pci.c
similarity index 100%
rename from drivers/pci.c
rename to drivers/pci/pci.c
diff --git a/drivers/pci_auto.c b/drivers/pci/pci_auto.c
similarity index 100%
rename from drivers/pci_auto.c
rename to drivers/pci/pci_auto.c
diff --git a/drivers/pci_indirect.c b/drivers/pci/pci_indirect.c
similarity index 100%
rename from drivers/pci_indirect.c
rename to drivers/pci/pci_indirect.c
diff --git a/drivers/tsi108_pci.c b/drivers/pci/tsi108_pci.c
similarity index 100%
rename from drivers/tsi108_pci.c
rename to drivers/pci/tsi108_pci.c
diff --git a/drivers/w83c553f.c b/drivers/pci/w83c553f.c
similarity index 100%
rename from drivers/w83c553f.c
rename to drivers/pci/w83c553f.c
diff --git a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..55528c889eec07542995315301ec4b60098747fb
--- /dev/null
+++ b/drivers/pcmcia/Makefile
@@ -0,0 +1,50 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libpcmcia.a
+
+COBJS-y += mpc8xx_pcmcia.o
+COBJS-y += pxa_pcmcia.o
+COBJS-y += rpx_pcmcia.o
+COBJS-y += ti_pci1410a.o
+COBJS-y += tqm8xx_pcmcia.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/i82365.c b/drivers/pcmcia/i82365.c
similarity index 100%
rename from drivers/i82365.c
rename to drivers/pcmcia/i82365.c
diff --git a/drivers/mpc8xx_pcmcia.c b/drivers/pcmcia/mpc8xx_pcmcia.c
similarity index 100%
rename from drivers/mpc8xx_pcmcia.c
rename to drivers/pcmcia/mpc8xx_pcmcia.c
diff --git a/drivers/pxa_pcmcia.c b/drivers/pcmcia/pxa_pcmcia.c
similarity index 100%
rename from drivers/pxa_pcmcia.c
rename to drivers/pcmcia/pxa_pcmcia.c
diff --git a/drivers/rpx_pcmcia.c b/drivers/pcmcia/rpx_pcmcia.c
similarity index 100%
rename from drivers/rpx_pcmcia.c
rename to drivers/pcmcia/rpx_pcmcia.c
diff --git a/drivers/ti_pci1410a.c b/drivers/pcmcia/ti_pci1410a.c
similarity index 100%
rename from drivers/ti_pci1410a.c
rename to drivers/pcmcia/ti_pci1410a.c
diff --git a/drivers/tqm8xx_pcmcia.c b/drivers/pcmcia/tqm8xx_pcmcia.c
similarity index 100%
rename from drivers/tqm8xx_pcmcia.c
rename to drivers/pcmcia/tqm8xx_pcmcia.c
diff --git a/rtc/Makefile b/drivers/rtc/Makefile
similarity index 100%
rename from rtc/Makefile
rename to drivers/rtc/Makefile
diff --git a/rtc/bf5xx_rtc.c b/drivers/rtc/bf5xx_rtc.c
similarity index 100%
rename from rtc/bf5xx_rtc.c
rename to drivers/rtc/bf5xx_rtc.c
diff --git a/rtc/date.c b/drivers/rtc/date.c
similarity index 100%
rename from rtc/date.c
rename to drivers/rtc/date.c
diff --git a/rtc/ds12887.c b/drivers/rtc/ds12887.c
similarity index 100%
rename from rtc/ds12887.c
rename to drivers/rtc/ds12887.c
diff --git a/rtc/ds1302.c b/drivers/rtc/ds1302.c
similarity index 100%
rename from rtc/ds1302.c
rename to drivers/rtc/ds1302.c
diff --git a/rtc/ds1306.c b/drivers/rtc/ds1306.c
similarity index 100%
rename from rtc/ds1306.c
rename to drivers/rtc/ds1306.c
diff --git a/rtc/ds1307.c b/drivers/rtc/ds1307.c
similarity index 100%
rename from rtc/ds1307.c
rename to drivers/rtc/ds1307.c
diff --git a/rtc/ds1337.c b/drivers/rtc/ds1337.c
similarity index 100%
rename from rtc/ds1337.c
rename to drivers/rtc/ds1337.c
diff --git a/rtc/ds1374.c b/drivers/rtc/ds1374.c
similarity index 100%
rename from rtc/ds1374.c
rename to drivers/rtc/ds1374.c
diff --git a/rtc/ds1556.c b/drivers/rtc/ds1556.c
similarity index 100%
rename from rtc/ds1556.c
rename to drivers/rtc/ds1556.c
diff --git a/rtc/ds164x.c b/drivers/rtc/ds164x.c
similarity index 100%
rename from rtc/ds164x.c
rename to drivers/rtc/ds164x.c
diff --git a/rtc/ds174x.c b/drivers/rtc/ds174x.c
similarity index 100%
rename from rtc/ds174x.c
rename to drivers/rtc/ds174x.c
diff --git a/rtc/ds3231.c b/drivers/rtc/ds3231.c
similarity index 100%
rename from rtc/ds3231.c
rename to drivers/rtc/ds3231.c
diff --git a/rtc/m41t11.c b/drivers/rtc/m41t11.c
similarity index 100%
rename from rtc/m41t11.c
rename to drivers/rtc/m41t11.c
diff --git a/rtc/m48t35ax.c b/drivers/rtc/m48t35ax.c
similarity index 100%
rename from rtc/m48t35ax.c
rename to drivers/rtc/m48t35ax.c
diff --git a/rtc/max6900.c b/drivers/rtc/max6900.c
similarity index 100%
rename from rtc/max6900.c
rename to drivers/rtc/max6900.c
diff --git a/rtc/mc146818.c b/drivers/rtc/mc146818.c
similarity index 100%
rename from rtc/mc146818.c
rename to drivers/rtc/mc146818.c
diff --git a/rtc/mcfrtc.c b/drivers/rtc/mcfrtc.c
similarity index 100%
rename from rtc/mcfrtc.c
rename to drivers/rtc/mcfrtc.c
diff --git a/rtc/mk48t59.c b/drivers/rtc/mk48t59.c
similarity index 100%
rename from rtc/mk48t59.c
rename to drivers/rtc/mk48t59.c
diff --git a/rtc/mpc5xxx.c b/drivers/rtc/mpc5xxx.c
similarity index 100%
rename from rtc/mpc5xxx.c
rename to drivers/rtc/mpc5xxx.c
diff --git a/rtc/mpc8xx.c b/drivers/rtc/mpc8xx.c
similarity index 100%
rename from rtc/mpc8xx.c
rename to drivers/rtc/mpc8xx.c
diff --git a/rtc/pcf8563.c b/drivers/rtc/pcf8563.c
similarity index 100%
rename from rtc/pcf8563.c
rename to drivers/rtc/pcf8563.c
diff --git a/rtc/rs5c372.c b/drivers/rtc/rs5c372.c
similarity index 100%
rename from rtc/rs5c372.c
rename to drivers/rtc/rs5c372.c
diff --git a/rtc/s3c24x0_rtc.c b/drivers/rtc/s3c24x0_rtc.c
similarity index 100%
rename from rtc/s3c24x0_rtc.c
rename to drivers/rtc/s3c24x0_rtc.c
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
index 40f3d672ec9e9361a56af944e02fd6b276df3346..735c630006bd4751561cbc043ed5a1355a595523 100644
--- a/drivers/serial/Makefile
+++ b/drivers/serial/Makefile
@@ -25,8 +25,19 @@ include $(TOPDIR)/config.mk
 
 LIB 	:= $(obj)libserial.a
 
-COBJS 	:= mcfuart.o serial_pl010.o serial_pl011.o
-
+COBJS-y += atmel_usart.o
+COBJS-y += mcfuart.o
+COBJS-y += ns9750_serial.o
+COBJS-y += ns16550.o
+COBJS-y += s3c4510b_uart.o
+COBJS-y += serial.o
+COBJS-y += serial_max3100.o
+COBJS-y += serial_pl010.o
+COBJS-y += serial_pl011.o
+COBJS-y += serial_xuartlite.o
+COBJS-y += usbtty.o
+
+COBJS	:= $(COBJS-y)
 SRCS 	:= $(COBJS:.o=.c)
 OBJS 	:= $(addprefix $(obj),$(COBJS))
 
diff --git a/drivers/atmel_usart.c b/drivers/serial/atmel_usart.c
similarity index 100%
rename from drivers/atmel_usart.c
rename to drivers/serial/atmel_usart.c
diff --git a/drivers/atmel_usart.h b/drivers/serial/atmel_usart.h
similarity index 100%
rename from drivers/atmel_usart.h
rename to drivers/serial/atmel_usart.h
diff --git a/drivers/ns16550.c b/drivers/serial/ns16550.c
similarity index 100%
rename from drivers/ns16550.c
rename to drivers/serial/ns16550.c
diff --git a/drivers/ns9750_serial.c b/drivers/serial/ns9750_serial.c
similarity index 100%
rename from drivers/ns9750_serial.c
rename to drivers/serial/ns9750_serial.c
diff --git a/drivers/s3c4510b_uart.c b/drivers/serial/s3c4510b_uart.c
similarity index 100%
rename from drivers/s3c4510b_uart.c
rename to drivers/serial/s3c4510b_uart.c
diff --git a/drivers/s3c4510b_uart.h b/drivers/serial/s3c4510b_uart.h
similarity index 100%
rename from drivers/s3c4510b_uart.h
rename to drivers/serial/s3c4510b_uart.h
diff --git a/drivers/serial.c b/drivers/serial/serial.c
similarity index 100%
rename from drivers/serial.c
rename to drivers/serial/serial.c
diff --git a/drivers/serial_max3100.c b/drivers/serial/serial_max3100.c
similarity index 100%
rename from drivers/serial_max3100.c
rename to drivers/serial/serial_max3100.c
diff --git a/drivers/serial_xuartlite.c b/drivers/serial/serial_xuartlite.c
similarity index 100%
rename from drivers/serial_xuartlite.c
rename to drivers/serial/serial_xuartlite.c
diff --git a/drivers/usbtty.c b/drivers/serial/usbtty.c
similarity index 100%
rename from drivers/usbtty.c
rename to drivers/serial/usbtty.c
diff --git a/drivers/usbtty.h b/drivers/serial/usbtty.h
similarity index 100%
rename from drivers/usbtty.h
rename to drivers/serial/usbtty.h
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..f8ea167b12caa05e705204f9a3b5371364251ed3
--- /dev/null
+++ b/drivers/usb/Makefile
@@ -0,0 +1,52 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libusb.a
+
+COBJS-y += isp116x-hcd.o
+COBJS-y += sl811_usb.o
+COBJS-y += usb_ohci.o
+COBJS-y += usbdcore.o
+COBJS-y += usbdcore_ep0.o
+COBJS-y += usbdcore_mpc8xx.o
+COBJS-y += usbdcore_omap1510.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/isp116x-hcd.c b/drivers/usb/isp116x-hcd.c
similarity index 100%
rename from drivers/isp116x-hcd.c
rename to drivers/usb/isp116x-hcd.c
diff --git a/drivers/isp116x.h b/drivers/usb/isp116x.h
similarity index 100%
rename from drivers/isp116x.h
rename to drivers/usb/isp116x.h
diff --git a/drivers/sl811.h b/drivers/usb/sl811.h
similarity index 100%
rename from drivers/sl811.h
rename to drivers/usb/sl811.h
diff --git a/drivers/sl811_usb.c b/drivers/usb/sl811_usb.c
similarity index 99%
rename from drivers/sl811_usb.c
rename to drivers/usb/sl811_usb.c
index b0cdf0bc2c77d270c63ec9e9c18940b2736290da..c1f8427c965866867327e576a835d628bf14b76d 100644
--- a/drivers/sl811_usb.c
+++ b/drivers/usb/sl811_usb.c
@@ -41,7 +41,7 @@
 #include <usb.h>
 #include "sl811.h"
 
-#include "../board/kup/common/kup.h"
+#include "../../board/kup/common/kup.h"
 
 #ifdef __PPC__
 # define EIEIO		__asm__ volatile ("eieio")
diff --git a/drivers/usb_ohci.c b/drivers/usb/usb_ohci.c
similarity index 100%
rename from drivers/usb_ohci.c
rename to drivers/usb/usb_ohci.c
diff --git a/drivers/usb_ohci.h b/drivers/usb/usb_ohci.h
similarity index 100%
rename from drivers/usb_ohci.h
rename to drivers/usb/usb_ohci.h
diff --git a/drivers/usbdcore.c b/drivers/usb/usbdcore.c
similarity index 100%
rename from drivers/usbdcore.c
rename to drivers/usb/usbdcore.c
diff --git a/drivers/usbdcore_ep0.c b/drivers/usb/usbdcore_ep0.c
similarity index 100%
rename from drivers/usbdcore_ep0.c
rename to drivers/usb/usbdcore_ep0.c
diff --git a/drivers/usbdcore_mpc8xx.c b/drivers/usb/usbdcore_mpc8xx.c
similarity index 100%
rename from drivers/usbdcore_mpc8xx.c
rename to drivers/usb/usbdcore_mpc8xx.c
diff --git a/drivers/usbdcore_omap1510.c b/drivers/usb/usbdcore_omap1510.c
similarity index 100%
rename from drivers/usbdcore_omap1510.c
rename to drivers/usb/usbdcore_omap1510.c
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..36611ecdda9303f98c337827d0f5fd5a19b28c2d
--- /dev/null
+++ b/drivers/video/Makefile
@@ -0,0 +1,53 @@
+#
+# (C) Copyright 2000-2007
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB 	:= $(obj)libvideo.a
+
+COBJS-y += ati_radeon_fb.o
+COBJS-y += cfb_console.o
+COBJS-y += ct69000.o
+COBJS-y += sed13806.o
+COBJS-y += sed156x.o
+COBJS-y += sm501.o
+COBJS-y += smiLynxEM.o
+COBJS-y += videomodes.o
+
+COBJS	:= $(COBJS-y)
+SRCS 	:= $(COBJS:.o=.c)
+OBJS 	:= $(addprefix $(obj),$(COBJS))
+
+all:	$(LIB)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/drivers/ati_ids.h b/drivers/video/ati_ids.h
similarity index 100%
rename from drivers/ati_ids.h
rename to drivers/video/ati_ids.h
diff --git a/drivers/ati_radeon_fb.c b/drivers/video/ati_radeon_fb.c
similarity index 99%
rename from drivers/ati_radeon_fb.c
rename to drivers/video/ati_radeon_fb.c
index 9613d80cc85e5f9452bc009c5a4174880c1665c5..0bdaa1c04d7dbc987a0ffccdd3d682199bc02d2f 100644
--- a/drivers/ati_radeon_fb.c
+++ b/drivers/video/ati_radeon_fb.c
@@ -350,7 +350,7 @@ void radeon_setmode(void)
 	radeon_write_pll_regs(rinfo, mode);
 }
 
-#include "bios_emulator/include/biosemu.h"
+#include "../bios_emulator/include/biosemu.h"
 extern int BootVideoCardBIOS(pci_dev_t pcidev, BE_VGAInfo ** pVGAInfo, int cleanUp);
 
 int radeon_probe(struct radeonfb_info *rinfo)
diff --git a/drivers/ati_radeon_fb.h b/drivers/video/ati_radeon_fb.h
similarity index 100%
rename from drivers/ati_radeon_fb.h
rename to drivers/video/ati_radeon_fb.h
diff --git a/drivers/cfb_console.c b/drivers/video/cfb_console.c
similarity index 100%
rename from drivers/cfb_console.c
rename to drivers/video/cfb_console.c
diff --git a/drivers/ct69000.c b/drivers/video/ct69000.c
similarity index 100%
rename from drivers/ct69000.c
rename to drivers/video/ct69000.c
diff --git a/drivers/sed13806.c b/drivers/video/sed13806.c
similarity index 100%
rename from drivers/sed13806.c
rename to drivers/video/sed13806.c
diff --git a/drivers/sed156x.c b/drivers/video/sed156x.c
similarity index 100%
rename from drivers/sed156x.c
rename to drivers/video/sed156x.c
diff --git a/drivers/sm501.c b/drivers/video/sm501.c
similarity index 100%
rename from drivers/sm501.c
rename to drivers/video/sm501.c
diff --git a/drivers/smiLynxEM.c b/drivers/video/smiLynxEM.c
similarity index 100%
rename from drivers/smiLynxEM.c
rename to drivers/video/smiLynxEM.c
diff --git a/drivers/videomodes.c b/drivers/video/videomodes.c
similarity index 100%
rename from drivers/videomodes.c
rename to drivers/video/videomodes.c
diff --git a/drivers/videomodes.h b/drivers/video/videomodes.h
similarity index 100%
rename from drivers/videomodes.h
rename to drivers/video/videomodes.h
diff --git a/examples/smc91111_eeprom.c b/examples/smc91111_eeprom.c
index 98e3e86ffa555906b0eb34c2cd3fff40fb425767..b8a3594e9e546f901af9449849d239834dcc9cf1 100644
--- a/examples/smc91111_eeprom.c
+++ b/examples/smc91111_eeprom.c
@@ -29,7 +29,7 @@
 
 #include <common.h>
 #include <exports.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE
 #define EEPROM		0x1;
diff --git a/lib_arm/board.c b/lib_arm/board.c
index 7e97f13476d8c8ec84426a5f7072a7bd5739f579..6f35aa06bf981b0594f9951eaf08b7ec7d1f6dd7 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -46,10 +46,10 @@
 #include <net.h>
 
 #ifdef CONFIG_DRIVER_SMC91111
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 #endif
 #ifdef CONFIG_DRIVER_LAN91C96
-#include "../drivers/lan91c96.h"
+#include "../drivers/net/lan91c96.h"
 #endif
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c
index 7c9990f8e0d2b583b1abbadb7bdbeb004645b70c..86a3b67c9899b2cba04c3979435f13e2d30cd5b9 100644
--- a/lib_blackfin/board.c
+++ b/lib_blackfin/board.c
@@ -35,7 +35,7 @@
 #include <i2c.h>
 #include "blackfin_board.h"
 #include <asm/cplb.h>
-#include "../drivers/smc91111.h"
+#include "../drivers/net/smc91111.h"
 
 #if defined(CONFIG_BF537)&&defined(CONFIG_POST)
 #include <post.h>
diff --git a/nand_spl/board/amcc/acadia/Makefile b/nand_spl/board/amcc/acadia/Makefile
index 926476f91b02f2c238a02793e64b3e3784a01d52..2d4d6016ebd6f99483849f56ccc89fcf3c250036 100644
--- a/nand_spl/board/amcc/acadia/Makefile
+++ b/nand_spl/board/amcc/acadia/Makefile
@@ -96,7 +96,7 @@ $(obj)nand_boot.c:
 # from drivers/nand directory
 $(obj)nand_ecc.c:
 	@rm -f $(obj)nand_ecc.c
-	ln -s $(SRCTREE)/drivers/nand/nand_ecc.c $(obj)nand_ecc.c
+	ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $(obj)nand_ecc.c
 
 #########################################################################
 
diff --git a/nand_spl/board/amcc/bamboo/Makefile b/nand_spl/board/amcc/bamboo/Makefile
index 8b5461dcf4cea9bb696fddf48702d4bb491a3005..3a633fb8871c6b00c3840a8bf4cabc71fbdc4132 100644
--- a/nand_spl/board/amcc/bamboo/Makefile
+++ b/nand_spl/board/amcc/bamboo/Makefile
@@ -82,7 +82,7 @@ $(obj)nand_boot.c:
 # from drivers/nand directory
 $(obj)nand_ecc.c:
 	@rm -f $(obj)nand_ecc.c
-	ln -s $(SRCTREE)/drivers/nand/nand_ecc.c $(obj)nand_ecc.c
+	ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $(obj)nand_ecc.c
 
 ifneq ($(OBJTREE), $(SRCTREE))
 $(obj)sdram.c:
diff --git a/nand_spl/board/amcc/sequoia/Makefile b/nand_spl/board/amcc/sequoia/Makefile
index ec1be5a768a5a228570aa5488353bba56a23b32a..78bf071f591df479ca9f6a7ce4622edd8f125430 100644
--- a/nand_spl/board/amcc/sequoia/Makefile
+++ b/nand_spl/board/amcc/sequoia/Makefile
@@ -88,7 +88,7 @@ $(obj)nand_boot.c:
 # from drivers/nand directory
 $(obj)nand_ecc.c:
 	@rm -f $(obj)nand_ecc.c
-	ln -s $(SRCTREE)/drivers/nand/nand_ecc.c $(obj)nand_ecc.c
+	ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $(obj)nand_ecc.c
 
 #########################################################################