diff --git a/Makefile b/Makefile
index b2048847c6e3b53ed77a604cbda41de1370a1a2e..f25750fd7eff720fbcd0612734c5bb6e8cf833a1 100644
--- a/Makefile
+++ b/Makefile
@@ -210,7 +210,7 @@ LIBS += cpu/ixp/npe/libnpe.a
 endif
 LIBS += lib_$(ARCH)/lib$(ARCH).a
 LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a \
-	fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/direct/libyaffs2.a
+	fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a
 LIBS += net/libnet.a
 LIBS += disk/libdisk.a
 LIBS += drivers/bios_emulator/libatibiosemu.a
@@ -378,7 +378,7 @@ TAG_SUBDIRS += fs/cramfs
 TAG_SUBDIRS += fs/fat
 TAG_SUBDIRS += fs/fdos
 TAG_SUBDIRS += fs/jffs2
-TAG_SUBDIRS += fs/yaffs2/direct
+TAG_SUBDIRS += fs/yaffs2
 TAG_SUBDIRS += net
 TAG_SUBDIRS += disk
 TAG_SUBDIRS += common
diff --git a/fs/Makefile b/fs/Makefile
index 48cf1d2c3a8a1a733f26d4afbd4ad0ecad8685ec..95ac0e93fe2ca40e955b4fc844f3f3f9267d0744 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -22,7 +22,7 @@
 #
 #
 
-SUBDIRS	:= jffs2 cramfs fdos fat reiserfs ext2 yaffs2/direct
+SUBDIRS	:= jffs2 cramfs fdos fat reiserfs ext2 yaffs2
 
 $(obj).depend all:
 	@for dir in $(SUBDIRS) ; do \
diff --git a/fs/yaffs2/direct/Makefile b/fs/yaffs2/Makefile
similarity index 75%
rename from fs/yaffs2/direct/Makefile
rename to fs/yaffs2/Makefile
index 0ee18e5c8a09bf0611fc7b3b957b85be488727f4..ab8b27f1da9f10e3c181defeabf656931059dca7 100644
--- a/fs/yaffs2/direct/Makefile
+++ b/fs/yaffs2/Makefile
@@ -30,14 +30,8 @@ COBJS-$(CONFIG_YAFFS2) := \
 SRCS    := $(COBJS-y:.o=.c)
 OBJS    := $(addprefix $(obj),$(COBJS-y))
 
-SYMLINKS = devextras.h yaffs_ecc.c yaffs_ecc.h yaffs_guts.c yaffs_guts.h yaffsinterface.h yportenv.h yaffs_tagscompat.c yaffs_tagscompat.h \
-          yaffs_packedtags1.c yaffs_packedtags1.h yaffs_packedtags2.c yaffs_packedtags2.h  yaffs_nandemul2k.h \
-          yaffs_nand.c yaffs_nand.h yaffs_mtdif.c yaffs_mtdif.h \
-          yaffs_tagsvalidity.c yaffs_tagsvalidity.h yaffs_checkptrw.h yaffs_checkptrw.c \
-          yaffs_qsort.c yaffs_qsort.h yaffs_mtdif2.c yaffs_mtdif2.h
-
 # -DCONFIG_YAFFS_NO_YAFFS1
-CFLAGS +=    -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE -DLINUX_VERSION_CODE=0x20616 
+CFLAGS +=    -DCONFIG_YAFFS_DIRECT -DCONFIG_YAFFS_SHORT_NAMES_IN_RAM -DCONFIG_YAFFS_YAFFS2 -DNO_Y_INLINE -DLINUX_VERSION_CODE=0x20622 
 
 all:  $(LIB)
 
diff --git a/fs/yaffs2/direct/devextras.h b/fs/yaffs2/direct/devextras.h
deleted file mode 120000
index 6c1a6bf5b8ee6ee74eb17d539c0b794254469764..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/devextras.h
+++ /dev/null
@@ -1 +0,0 @@
-../devextras.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_checkptrw.c b/fs/yaffs2/direct/yaffs_checkptrw.c
deleted file mode 120000
index a5d3a1591bf3e256c0bb87a91ce990ab0d21e879..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_checkptrw.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_checkptrw.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_checkptrw.h b/fs/yaffs2/direct/yaffs_checkptrw.h
deleted file mode 120000
index 9b09986387935fa59f35d43c23f2091820c75fb2..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_checkptrw.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_checkptrw.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_ecc.c b/fs/yaffs2/direct/yaffs_ecc.c
deleted file mode 120000
index d20dc825fe001b587f21a7451054c77a644af978..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_ecc.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_ecc.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_ecc.h b/fs/yaffs2/direct/yaffs_ecc.h
deleted file mode 120000
index cb50bb2329a9ee85f201f9e4ca2f28510767e22b..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_ecc.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_ecc.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_guts.c b/fs/yaffs2/direct/yaffs_guts.c
deleted file mode 120000
index 7a118f86d247da9e9bac5686f09ed7239a6a52c8..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_guts.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_guts.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_guts.h b/fs/yaffs2/direct/yaffs_guts.h
deleted file mode 120000
index c10089fbdc66ac660e206ef2cd13f9a81965b5e9..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_guts.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_guts.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_mtdif.c b/fs/yaffs2/direct/yaffs_mtdif.c
deleted file mode 120000
index be0612dd4b92a3a607aaa4c3fd33ea3cbc6aeee9..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_mtdif.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_mtdif.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_mtdif.h b/fs/yaffs2/direct/yaffs_mtdif.h
deleted file mode 120000
index bcfc59be0aa577f7540d5c8031bc9e40647621c1..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_mtdif.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_mtdif.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_mtdif2.c b/fs/yaffs2/direct/yaffs_mtdif2.c
deleted file mode 120000
index a5b1bb9bb22eae926b620c8c4630a8fd98b1082c..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_mtdif2.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_mtdif2.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_mtdif2.h b/fs/yaffs2/direct/yaffs_mtdif2.h
deleted file mode 120000
index aa1feda6ab19ee6ec451b6d7e53d9977a95f74ff..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_mtdif2.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_mtdif2.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_nand.c b/fs/yaffs2/direct/yaffs_nand.c
deleted file mode 120000
index 6dd30c2760539eb017af412d0b3a0537fcedf8c7..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_nand.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_nand.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_nand.h b/fs/yaffs2/direct/yaffs_nand.h
deleted file mode 120000
index 8a539ee108665b1d6ea12fdf907c2d3f579f316b..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_nand.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_nand.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_nandemul2k.h b/fs/yaffs2/direct/yaffs_nandemul2k.h
deleted file mode 120000
index 1c2d0c252b0e8dc1ca628f8c5c288e966e7ac009..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_nandemul2k.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_nandemul2k.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_packedtags1.c b/fs/yaffs2/direct/yaffs_packedtags1.c
deleted file mode 120000
index f7c56393403b9cde5cea687e34a065126f1abbb8..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_packedtags1.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_packedtags1.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_packedtags1.h b/fs/yaffs2/direct/yaffs_packedtags1.h
deleted file mode 120000
index b74537b53264f55a627a3ce2046b6b980eebeec8..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_packedtags1.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_packedtags1.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_packedtags2.c b/fs/yaffs2/direct/yaffs_packedtags2.c
deleted file mode 120000
index 243d4b619a9c5fecb241b8bd62a9612e6ee8fbab..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_packedtags2.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_packedtags2.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_packedtags2.h b/fs/yaffs2/direct/yaffs_packedtags2.h
deleted file mode 120000
index bd1b3a3034905a375fa74d52c18c4fe8170381c9..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_packedtags2.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_packedtags2.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_qsort.c b/fs/yaffs2/direct/yaffs_qsort.c
deleted file mode 120000
index 928ada732302f41c7ead7b6b74b9b4cccdbfc6fa..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_qsort.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_qsort.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_qsort.h b/fs/yaffs2/direct/yaffs_qsort.h
deleted file mode 120000
index 1b04c2107dd26e93a9dbea932a0c816144729aa2..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_qsort.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_qsort.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_tagscompat.c b/fs/yaffs2/direct/yaffs_tagscompat.c
deleted file mode 120000
index 4819106edb185ec8b37cf4a5c48078a65056dc07..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_tagscompat.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_tagscompat.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_tagscompat.h b/fs/yaffs2/direct/yaffs_tagscompat.h
deleted file mode 120000
index bff900c11f8ac58936ab3b348e2cac2ee68fd81e..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_tagscompat.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_tagscompat.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_tagsvalidity.c b/fs/yaffs2/direct/yaffs_tagsvalidity.c
deleted file mode 120000
index 4e8b83fe2fa994e37075b51cf5118a21aa579cc1..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_tagsvalidity.c
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_tagsvalidity.c
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_tagsvalidity.h b/fs/yaffs2/direct/yaffs_tagsvalidity.h
deleted file mode 120000
index b7bb01434d526a04aa07d0b6e7c60b2178bd9363..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffs_tagsvalidity.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffs_tagsvalidity.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffsinterface.h b/fs/yaffs2/direct/yaffsinterface.h
deleted file mode 120000
index 0a6c87a216b5bb6986391f3d66117665c9cc131a..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yaffsinterface.h
+++ /dev/null
@@ -1 +0,0 @@
-../yaffsinterface.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yportenv.h b/fs/yaffs2/direct/yportenv.h
deleted file mode 120000
index 205c44b4e4f2c6caa8250d22f1dcc187df78b7fd..0000000000000000000000000000000000000000
--- a/fs/yaffs2/direct/yportenv.h
+++ /dev/null
@@ -1 +0,0 @@
-../yportenv.h
\ No newline at end of file
diff --git a/fs/yaffs2/direct/yaffs_flashif.h b/fs/yaffs2/yaffs_flashif.h
similarity index 100%
rename from fs/yaffs2/direct/yaffs_flashif.h
rename to fs/yaffs2/yaffs_flashif.h
diff --git a/fs/yaffs2/direct/yaffs_malloc.h b/fs/yaffs2/yaffs_malloc.h
similarity index 100%
rename from fs/yaffs2/direct/yaffs_malloc.h
rename to fs/yaffs2/yaffs_malloc.h
diff --git a/fs/yaffs2/direct/yaffs_ramdisk.h b/fs/yaffs2/yaffs_ramdisk.h
similarity index 100%
rename from fs/yaffs2/direct/yaffs_ramdisk.h
rename to fs/yaffs2/yaffs_ramdisk.h
diff --git a/fs/yaffs2/direct/yaffscfg.c b/fs/yaffs2/yaffscfg.c
similarity index 100%
rename from fs/yaffs2/direct/yaffscfg.c
rename to fs/yaffs2/yaffscfg.c
diff --git a/fs/yaffs2/direct/yaffscfg.h b/fs/yaffs2/yaffscfg.h
similarity index 100%
rename from fs/yaffs2/direct/yaffscfg.h
rename to fs/yaffs2/yaffscfg.h
diff --git a/fs/yaffs2/direct/yaffsfs.c b/fs/yaffs2/yaffsfs.c
similarity index 100%
rename from fs/yaffs2/direct/yaffsfs.c
rename to fs/yaffs2/yaffsfs.c
diff --git a/fs/yaffs2/direct/yaffsfs.h b/fs/yaffs2/yaffsfs.h
similarity index 100%
rename from fs/yaffs2/direct/yaffsfs.h
rename to fs/yaffs2/yaffsfs.h
diff --git a/fs/yaffs2/direct/ydirectenv.h b/fs/yaffs2/ydirectenv.h
similarity index 100%
rename from fs/yaffs2/direct/ydirectenv.h
rename to fs/yaffs2/ydirectenv.h