From e5da1b85209d31044af7be529dfd355b836b4fad Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 03:25:05 +0200
Subject: [PATCH 1/6] cramfs: fix installation

The installation procedure of cramfs was broken when
$(HOST_DIR)/usr/bin didn't exist (i.e, cramfsck was installed as
$(HOST_DIR)/usr/bin directly). Use install -D with a proper
destination argument to make it work.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/cramfs/cramfs.mk | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/package/cramfs/cramfs.mk b/package/cramfs/cramfs.mk
index 7b1924e816..9073ae5424 100644
--- a/package/cramfs/cramfs.mk
+++ b/package/cramfs/cramfs.mk
@@ -16,8 +16,8 @@ define CRAMFS_BUILD_CMDS
 endef
 
 define CRAMFS_INSTALL_TARGET_CMDS
- install -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin
- install -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin
+ install -D -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin/mkcramfs
+ install -D -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin/cramfsck
 endef
 
 define HOST_CRAMFS_BUILD_CMDS
@@ -25,8 +25,8 @@ define HOST_CRAMFS_BUILD_CMDS
 endef
 
 define HOST_CRAMFS_INSTALL_CMDS
- install -m 755 $(@D)/mkcramfs $(HOST_DIR)/usr/bin
- install -m 755 $(@D)/cramfsck $(HOST_DIR)/usr/bin
+ install -D -m 755 $(@D)/mkcramfs $(HOST_DIR)/usr/bin/mkcramfs
+ install -D -m 755 $(@D)/cramfsck $(HOST_DIR)/usr/bin/cramfsck
 endef
 
 $(eval $(call GENTARGETS,package,cramfs))

From 64ec20e6c019e329bf6923fbf330b86b3cfad524 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 03:26:16 +0200
Subject: [PATCH 2/6] fs: change the way the device table is configured

Until now, the location of the device table was specified by a
variable in board Makefiles. Unfortunately, this variable is not
accessible from fs/common.mk, since the target/ code is included
*after* fs/common.mk.

Anyway, the general idea is to move away from these boards Makefile,
and provide configuration option for things like the device table
location.

Therefore, this patch adds a BR2_ROOTFS_DEVICE_TABLE option which
allows to specify which device table should be used.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 fs/Config.in | 8 ++++++++
 fs/common.mk | 5 +++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/fs/Config.in b/fs/Config.in
index f885c52e7c..6865eeaff7 100644
--- a/fs/Config.in
+++ b/fs/Config.in
@@ -15,6 +15,14 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT
 	  only argument. Make sure the exit code of that script is 0,
 	  otherwise make will stop after calling it.
 
+config BR2_ROOTFS_DEVICE_TABLE
+       string "Path to the device table"
+       default "target/generic/device_table.txt"
+       help
+         Specify the location of a device table, that will be passed
+         to the makedevs utility to create all the special device
+         files in the target filesystem.
+
 source "fs/cramfs/Config.in"
 source "fs/cloop/Config.in"
 source "fs/ext2/Config.in"
diff --git a/fs/common.mk b/fs/common.mk
index fa6afd94d0..cc94eb4ef2 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -28,6 +28,7 @@
 # macro will automatically generate a compressed filesystem image.
 
 FAKEROOT_SCRIPT = $(BUILD_DIR)/_fakeroot.fs
+ROOTFS_DEVICE_TABLE = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE))
 
 define ROOTFS_TARGET_INTERNAL
 
@@ -38,8 +39,8 @@ $(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot makedevs
 	touch $(BUILD_DIR)/.fakeroot.00000
 	cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT)
 	echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
-ifneq ($(TARGET_DEVICE_TABLE),)
-	echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
+ifneq ($(ROOTFS_DEVICE_TABLE),)
+	echo "$(HOST_DIR)/usr/bin/makedevs -d $(ROOTFS_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
 endif
 	echo "$(ROOTFS_$(2)_CMD)" >> $(FAKEROOT_SCRIPT)
 	chmod a+x $(FAKEROOT_SCRIPT)

From d25c560ab2c33a75194c68fd282d1b24119128c7 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 03:30:59 +0200
Subject: [PATCH 3/6] cramfs/jffs2: use the new ROOTFS_DEVICE_TABLE variable

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 fs/cramfs/cramfs.mk | 4 ++--
 fs/jffs2/jffs2.mk   | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/cramfs/cramfs.mk b/fs/cramfs/cramfs.mk
index ccd316f5d6..e0deb7e2af 100644
--- a/fs/cramfs/cramfs.mk
+++ b/fs/cramfs/cramfs.mk
@@ -9,8 +9,8 @@ else
 CRAMFS_OPTS=-l
 endif
 
-ifneq ($(TARGET_DEVICE_TABLE),)
-CRAMFS_OPTS += -D $(TARGET_DEVICE_TABLE)
+ifneq ($(ROOTFS_DEVICE_TABLE),)
+CRAMFS_OPTS += -D $(ROOTFS_DEVICE_TABLE)
 endif
 
 define ROOTFS_CRAMFS_CMD
diff --git a/fs/jffs2/jffs2.mk b/fs/jffs2/jffs2.mk
index a0a563d185..36be03741c 100644
--- a/fs/jffs2/jffs2.mk
+++ b/fs/jffs2/jffs2.mk
@@ -32,8 +32,8 @@ JFFS2_OPTS += -n
 SUMTOOL_OPTS += -n
 endif
 
-ifneq ($(TARGET_DEVICE_TABLE),)
-JFFS2_OPTS += -D $(TARGET_DEVICE_TABLE)
+ifneq ($(ROOTFS_DEVICE_TABLE),)
+JFFS2_OPTS += -D $(ROOTFS_DEVICE_TABLE)
 endif
 
 ROOTFS_JFFS2_DEPENDENCIES = host-mtd

From 0b78722085ad0c678fca8ea5a8e39c206f66afae Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 03:31:22 +0200
Subject: [PATCH 4/6] documentation: update after TARGET_DEVICE_TABLE removal

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 docs/buildroot.html | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/docs/buildroot.html b/docs/buildroot.html
index dfa69e0dd9..abe822f79f 100644
--- a/docs/buildroot.html
+++ b/docs/buildroot.html
@@ -661,16 +661,6 @@ endif
 	<code>$(BOARD_PATH)/target_skeleton</code> so that the target
 	skeleton is stored in the board specific directory.</li>
 
-	<li><code>TARGET_DEVICE_TABLE</code> to a file that contains
-	the target device table &mdash; the list of device files (in
-	<code>/dev/</code>) to be created by the root filesystem build
-	procedure. If this variable is defined, the given device table
-	will be used instead of the default one. If defined, the
-	convention is to define it to
-	<code>$(BOARD_PATH)/target_device_table.txt</code>. See
-	<code>target/generic/device_table.txt</code> for an example
-	file.</li>
-
       </ul>
 
       </li>

From 32241116c8211b1d4fe03a570523ecf8a4c71509 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 04:33:30 +0200
Subject: [PATCH 5/6] Remove all TARGET_DEVICE_TABLE definitions

We have a special case for Xtensa, which was patching the generic
device_table.txt. Instead of doing this, we just keep a copy of the
device table, specific to Xtensa, with Xtensa specifities. The fact
that the patch wasn't applying anymore on the generic device table is
a sign that the existing approach wasn't working anyway.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 target/device/Atmel/Makefile.in               |   1 -
 target/device/Atmel/atngw100-base/Makefile.in |   1 -
 target/device/Atmel/atngw100/Makefile.in      |   1 -
 target/device/Atmel/atstk1005/Makefile.in     |   1 -
 target/device/Atmel/atstk100x/Makefile.in     |   1 -
 target/device/KwikByte/kb9202/Makefile.in     |   1 -
 target/device/valka/Makefile.in               |   2 -
 target/device/xtensa/Makefile.in              |   8 -
 target/device/xtensa/device_table.diff        |  10 -
 target/device/xtensa/device_table.txt         | 189 ++++++++++++++++++
 target/generic/Makefile.in                    |   2 -
 11 files changed, 189 insertions(+), 28 deletions(-)
 delete mode 100644 target/device/xtensa/device_table.diff
 create mode 100644 target/device/xtensa/device_table.txt

diff --git a/target/device/Atmel/Makefile.in b/target/device/Atmel/Makefile.in
index bf7a2d1083..c5dfffd70b 100644
--- a/target/device/Atmel/Makefile.in
+++ b/target/device/Atmel/Makefile.in
@@ -8,7 +8,6 @@ BOARD_PATH:=$(call qstrip,$(BR2_BOARD_PATH))
 
 ATMEL_TARGET:=$(ATMEL_PATH)/root
 TARGET_SKELETON:=$(ATMEL_TARGET)/target_skeleton
-TARGET_DEVICE_TABLE:=$(ATMEL_TARGET)/device_table.txt
 TARGET_SKELETON_LINKS:=$(ATMEL_TARGET)/skel.tar.gz
 
 ifeq ($(BR2_avr32),y)
diff --git a/target/device/Atmel/atngw100-base/Makefile.in b/target/device/Atmel/atngw100-base/Makefile.in
index 467951f080..c2f2969700 100644
--- a/target/device/Atmel/atngw100-base/Makefile.in
+++ b/target/device/Atmel/atngw100-base/Makefile.in
@@ -1,5 +1,4 @@
 ifeq ($(BR2_TARGET_AVR32_ATNGW100_BASE),y)
 UBOOT_BOARD_NAME:=atngw100
 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt
 endif
diff --git a/target/device/Atmel/atngw100/Makefile.in b/target/device/Atmel/atngw100/Makefile.in
index 3c34d8d4a9..7e02d8e831 100644
--- a/target/device/Atmel/atngw100/Makefile.in
+++ b/target/device/Atmel/atngw100/Makefile.in
@@ -1,5 +1,4 @@
 ifeq ($(BR2_TARGET_AVR32_ATNGW100),y)
 UBOOT_BOARD_NAME:=atngw100
 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt
 endif
diff --git a/target/device/Atmel/atstk1005/Makefile.in b/target/device/Atmel/atstk1005/Makefile.in
index 4c3aadffba..84b31070de 100644
--- a/target/device/Atmel/atstk1005/Makefile.in
+++ b/target/device/Atmel/atstk1005/Makefile.in
@@ -1,4 +1,3 @@
 ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1005)),y)
 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt
 endif
diff --git a/target/device/Atmel/atstk100x/Makefile.in b/target/device/Atmel/atstk100x/Makefile.in
index e9dd4dc428..395c74a6e4 100644
--- a/target/device/Atmel/atstk100x/Makefile.in
+++ b/target/device/Atmel/atstk100x/Makefile.in
@@ -1,5 +1,4 @@
 ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1002)),y)
 UBOOT_BOARD_NAME:=atstk1002
 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt
 endif
diff --git a/target/device/KwikByte/kb9202/Makefile.in b/target/device/KwikByte/kb9202/Makefile.in
index 5d743cec55..0048dcc3a5 100644
--- a/target/device/KwikByte/kb9202/Makefile.in
+++ b/target/device/KwikByte/kb9202/Makefile.in
@@ -1,4 +1,3 @@
 BOARD_PATH=target/device/KwikByte/kb9202
 
 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt
diff --git a/target/device/valka/Makefile.in b/target/device/valka/Makefile.in
index 01422465ef..fec4d88d5c 100644
--- a/target/device/valka/Makefile.in
+++ b/target/device/valka/Makefile.in
@@ -2,7 +2,6 @@ ifeq ($(BR2_TARGET_VALKA),y)
 VALKA_PATH= target/device/valka
 
 TARGET_SKELETON=$(VALKA_PATH)/target_skeleton
-TARGET_DEVICE_TABLE=$(VALKA_PATH)/device_table.txt
 KERNEL_HEADERS_PATCH_DIR=target/device/Atmel/arch-avr32/kernel-headers-2.6.28.2
 
 valka_status:
@@ -10,7 +9,6 @@ valka_status:
 	@echo VALKA_PATH = $(VALKA_PATH)
 	@echo BOARD_NAME = $(BR_BOARD_NAME)
 	@echo TARGET_SKELETON = $(TARGET_SKELETON)
-	@echo TARGET_DEVICE_TABLE = $(TARGET_DEVICE_TABLE)
 	@echo BR2_PACKAGE_BUSYBOX_CONFIG = $(BR2_PACKAGE_BUSYBOX_CONFIG)
 	@echo BR2_PACKAGE_LINUX_KCONFIG = $(BR2_PACKAGE_LINUX_KCONFIG)
 	@echo "*****************************************************************"
diff --git a/target/device/xtensa/Makefile.in b/target/device/xtensa/Makefile.in
index 7c95c239b7..f878a822a7 100644
--- a/target/device/xtensa/Makefile.in
+++ b/target/device/xtensa/Makefile.in
@@ -6,12 +6,4 @@ ifeq ($(strip $(BR2_TARGET_XTENSA_XTAV60)),y)
 TARGET_SKELETON_PATCH:=target/device/xtensa
 endif
 
-#  Custom device table patch used when targeting ISS:
-OLD_TARGET_DEVICE_TABLE := $(TARGET_DEVICE_TABLE)
-TARGET_DEVICE_TABLE := target/device/xtensa/device_table.txt
-makedevs:
-	@echo "Applying patch to $(TARGET_DEVICE_TABLE)"
-	cp -f $(OLD_TARGET_DEVICE_TABLE) $(TARGET_DEVICE_TABLE)
-	patch -p1 -g 0 < target/device/xtensa/device_table.diff
-
 endif
diff --git a/target/device/xtensa/device_table.diff b/target/device/xtensa/device_table.diff
deleted file mode 100644
index 12f682546d..0000000000
--- a/target/device/xtensa/device_table.diff
+++ /dev/null
@@ -1,10 +0,0 @@
-diff --git a/target/generic/device_table.txt b/target/generic/device_table.txt
-index f4b16ba..b87bf69 100644
---- a/target/device/xtensa/device_table.txt
-+++ b/target/device/xtensa/device_table.txt
-@@ -169,3 +169,5 @@
- #/dev/mcd      b       640     0       0       23      0       0       0       
- #/dev/optcd    b       640     0       0       17      0       0       0       
- 
-+/dev/simdisk0        b      640      0       0       240     0       0       0
-+/dev/simdisk1        b      640      0       0       240     1       0       0
diff --git a/target/device/xtensa/device_table.txt b/target/device/xtensa/device_table.txt
new file mode 100644
index 0000000000..d0c7467973
--- /dev/null
+++ b/target/device/xtensa/device_table.txt
@@ -0,0 +1,189 @@
+# When building a target filesystem, it is desirable to not have to
+# become root and then run 'mknod' a thousand times.  Using a device 
+# table you can create device nodes and directories "on the fly".
+#
+# This is a sample device table file for use with genext2fs.  You can
+# do all sorts of interesting things with a device table file.  For
+# example, if you want to adjust the permissions on a particular file
+# you can just add an entry like:
+#   /sbin/foobar        f       2755    0       0       -       -       -       -       -
+# and (assuming the file /sbin/foobar exists) it will be made setuid
+# root (regardless of what its permissions are on the host filesystem.
+# Furthermore, you can use a single table entry to create a many device
+# minors.  For example, if I wanted to create /dev/hda and /dev/hda[0-15]
+# I could just use the following two table entries:
+#   /dev/hda    b       640     0       0       3       0       0       0       -
+#   /dev/hda    b       640     0       0       3       1       1       1       15
+# 
+# Device table entries take the form of:
+# <name>    <type>      <mode>  <uid>   <gid>   <major> <minor> <start> <inc>   <count>
+# where name is the file name,  type can be one of: 
+#       f       A regular file
+#       d       Directory
+#       c       Character special device file
+#       b       Block special device file
+#       p       Fifo (named pipe)
+# uid is the user id for the target file, gid is the group id for the
+# target file.  The rest of the entries (major, minor, etc) apply only 
+# to device special files.
+
+# Have fun
+# -Erik Andersen <andersen@codepoet.org>
+#
+
+#<name>		<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>
+/dev		d	755	0	0	-	-	-	-	-
+/dev/pts	d	755	0	0	-	-	-	-	-
+/dev/shm	d	755	0	0	-	-	-	-	-
+/tmp		d	1777	0	0	-	-	-	-	-
+/etc		d	755	0	0	-	-	-	-	-
+/home/default	d	2755	1000	1000	-	-	-	-	-
+#<name>					<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>
+/bin/busybox				f	4755	0	0	-	-	-	-	-
+/etc/shadow				f	600	0	0	-	-	-	-	-
+/etc/passwd				f	644	0	0	-	-	-	-	-
+/etc/network/if-up.d			d	755	0	0	-	-	-	-	-
+/etc/network/if-pre-up.d		d	755	0	0	-	-	-	-	-
+/etc/network/if-down.d			d	755	0	0	-	-	-	-	-
+/etc/network/if-post-down.d		d	755	0	0	-	-	-	-	-
+/usr/share/udhcpc/default.script	f	755	0	0	-	-	-	-	-
+# uncomment this to allow starting x as non-root
+#/usr/X11R6/bin/Xfbdev		f	4755	0	0	-	-	-	-	-
+# Normal system devices
+/dev/mem	c	640	0	0	1	1	0	0	-
+/dev/kmem	c	640	0	0	1	2	0	0	-
+/dev/null	c	666	0	0	1	3	0	0	-
+/dev/zero	c	666	0	0	1	5	0	0	-
+/dev/random	c	666	0	0	1	8	0	0	-
+/dev/urandom	c	666	0	0	1	9	0	0	-
+/dev/ram	b	640	0	0	1	1	0	0	-
+/dev/ram	b	640	0	0	1	0	0	1	4
+/dev/loop	b	640	0	0	7	0	0	1	2
+/dev/rtc	c	640	0	0	10	135	-	-	-
+/dev/console	c	666	0	0	5	1	-	-	-
+/dev/tty	c	666	0	0	5	0	-	-	-
+/dev/tty	c	666	0	0	4	0	0	1	8
+/dev/ttyp	c	666	0	0	3	0	0	1	10
+/dev/ptyp	c       666     0       0       2       0       0       1       10
+/dev/ptmx	c	666	0	0	5	2	-	-	-
+/dev/ttyP	c	666	0	0	57	0	0	1	4
+/dev/ttyS	c	666	0	0	4	64	0	1	4
+/dev/fb		c	640	0	5	29	0	0	1	4
+#/dev/ttySA	c	666	0	0	204	5	0	1	3
+/dev/psaux	c	666	0	0	10	1	0	0	-
+#/dev/ppp	c	666	0	0	108	0	-	-	-
+/dev/ttyCPM	c	666	0	0	204	46	0	1	4
+/dev/ttyAMA	c	666	0	0	204	64	0	1	4
+/dev/ttySAC	c	666	0	0	204	64	0	1	4
+/dev/ttyPSC	c	666	0	0	204	148	0	1	4
+/dev/ttyUL	c	666	0	0	204	187	0	1	4
+/dev/ttymxc	c	666	0	0	207	16	0	1	3
+
+# Input stuff
+/dev/input		d	755	0	0	-	-	-	-	-
+/dev/input/mice		c	640	0	0	13	63	0	0	-
+/dev/input/mouse	c	660	0	0	13	32	0	1	4
+/dev/input/event	c	660	0	0	13	64	0	1	4
+#/dev/input/js		c	660	0	0	13	0	0	1	4
+
+
+# MTD stuff
+/dev/mtd	c	640	0	0	90	0	0	2	4
+/dev/mtdblock	b	640	0	0	31	0	0	1	4
+
+#Tun/tap driver
+/dev/net	d	755	0	0	-	-	-	-	-
+/dev/net/tun	c	660	0	0	10	200	-	-	-
+
+# Audio stuff
+#/dev/audio	c	666	0	29	14	4	-	-	-
+#/dev/audio1	c	666	0	29	14	20	-	-	-
+#/dev/dsp	c	666	0	29	14	3	-	-	-
+#/dev/dsp1	c	666	0	29	14	19	-	-	-
+#/dev/sndstat	c	666	0	29	14	6	-	-	-
+
+# User-mode Linux stuff
+#/dev/ubda	b	640	0	0	98	0	0	0	-
+#/dev/ubda	b	640	0	0	98	1	1	1	15
+
+# IDE Devices
+/dev/hda	b	640	0	0	3	0	0	0	-
+/dev/hda	b	640	0	0	3	1	1	1	15
+/dev/hdb	b	640	0	0	3	64	0	0	-
+/dev/hdb	b	640	0	0	3	65	1	1	15
+#/dev/hdc	b	640	0	0	22	0	0	0	-
+#/dev/hdc	b	640	0	0	22	1	1	1	15
+#/dev/hdd	b	640	0	0	22	64	0	0	-
+#/dev/hdd	b	640	0	0	22	65	1	1	15
+#/dev/hde	b	640	0	0	33	0	0	0	-
+#/dev/hde	b	640	0	0	33	1	1	1	15
+#/dev/hdf	b	640	0	0	33	64	0	0	-
+#/dev/hdf	b	640	0	0	33	65	1	1	15
+#/dev/hdg	b	640	0	0	34	0	0	0	-
+#/dev/hdg	b	640	0	0	34	1	1	1	15
+#/dev/hdh	b	640	0	0	34	64	0	0	-
+#/dev/hdh	b	640	0	0	34	65	1	1	15
+
+# SCSI Devices
+/dev/sda	b	640	0	0	8	0	0	0	-
+/dev/sda	b	640	0	0	8	1	1	1	15
+/dev/sdb	b	640	0	0	8	16	0	0	-
+/dev/sdb	b	640	0	0	8	17	1	1	15
+#/dev/sdc	b	640	0	0	8	32	0	0	-
+#/dev/sdc	b	640	0	0	8	33	1	1	15
+#/dev/sdd	b	640	0	0	8	48	0	0	-
+#/dev/sdd	b	640	0	0	8	49	1	1	15
+#/dev/sde	b	640	0	0	8	64	0	0	-
+#/dev/sde	b	640	0	0	8	65	1	1	15
+#/dev/sdf	b	640	0	0	8	80	0	0	-
+#/dev/sdf	b	640	0	0	8	81	1	1	15
+#/dev/sdg	b	640	0	0	8	96	0	0	-
+#/dev/sdg	b	640	0	0	8	97	1	1	15
+#/dev/sdh	b	640	0	0	8	112	0	0	-
+#/dev/sdh	b	640	0	0	8	113	1	1	15
+#/dev/sg	c	640	0	0	21	0	0	1	15
+#/dev/scd	b	640	0	0	11	0	0	1	15
+#/dev/st	c	640	0	0	9	0	0	1	8
+#/dev/nst	c	640	0	0	9	128	0	1	8
+#/dev/st	c	640	0	0	9	32	1	1	4
+#/dev/st	c	640	0	0	9	64	1	1	4
+#/dev/st	c	640	0	0	9	96	1	1	4
+
+# USB block devices (ub driver)
+/dev/uba	b	640	0	0	180	0	0	0	-
+/dev/uba	b	640	0	0	180	1	1	1	6
+/dev/ubb	b	640	0	0	180	8	0	0	-
+/dev/ubb	b	640	0	0	180	65	1	1	6
+
+# Floppy disk devices
+#/dev/fd	b	640	0	0	2	0	0	1	2
+#/dev/fd0d360	b	640	0	0	2	4	0	0	-
+#/dev/fd1d360	b	640	0	0	2	5	0	0	-
+#/dev/fd0h1200	b	640	0	0	2	8	0	0	-
+#/dev/fd1h1200	b	640	0	0	2	9	0	0	-
+#/dev/fd0u1440	b	640	0	0	2	28	0	0	-
+#/dev/fd1u1440	b	640	0	0	2	29	0	0	-
+#/dev/fd0u2880	b	640	0	0	2	32	0	0	-
+#/dev/fd1u2880	b	640	0	0	2	33	0	0	-
+
+# All the proprietary cdrom devices in the world
+#/dev/aztcd	b	640	0	0	29	0	0	0	-
+#/dev/bpcd	b	640	0	0	41	0	0	0	-
+#/dev/capi20	c	640	0	0	68	0	0	1	2
+#/dev/cdu31a	b	640	0	0	15	0	0	0	-
+#/dev/cdu535	b	640	0	0	24	0	0	0	-
+#/dev/cm206cd	b	640	0	0	32	0	0	0	-
+#/dev/sjcd	b	640	0	0	18	0	0	0	-
+#/dev/sonycd	b	640	0	0	15	0	0	0	-
+#/dev/gscd	b	640	0	0	16	0	0	0	-
+#/dev/sbpcd	b	640	0	0	25	0	0	0	-
+#/dev/sbpcd	b	640	0	0	25	0	0	1	4
+#/dev/mcd	b	640	0	0	23	0	0	0	-
+#/dev/optcd	b	640	0	0	17	0	0	0	-
+
+# I2C device nodes
+/dev/i2c-	c	666	0	0	89	0	0	1	4
+
+# Xtensa special devices
+/dev/simdisk0        b      640      0       0       240     0       0       0
+/dev/simdisk1        b      640      0       0       240     1       0       0
diff --git a/target/generic/Makefile.in b/target/generic/Makefile.in
index f77f9698c8..9a56f76040 100644
--- a/target/generic/Makefile.in
+++ b/target/generic/Makefile.in
@@ -1,10 +1,8 @@
 # Default target skeleton stuff, may be overridden
 TARGET_SKELETON=target/generic/target_skeleton
-TARGET_DEVICE_TABLE=target/generic/device_table.txt
 
 ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y)
 TARGET_SKELETON=target/generic/target_busybox_skeleton
-TARGET_DEVICE_TABLE=target/generic/mini_device_table.txt
 endif
 
 TARGET_GENERIC_HOSTNAME:=$(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))

From 525ac766cd795c4f7f721e7b940e3ebce99e8ebc Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 17 Apr 2010 04:34:56 +0200
Subject: [PATCH 6/6] Update defconfigs to include BR2_ROOTFS_DEVICE_TABLE
 definition

We only bother updating the defconfigs that need a non-default
BR2_ROOTFS_DEVICE_TABLE value.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 configs/arm_toolchain_defconfig           | 1 +
 configs/at91rm9200df_defconfig            | 1 +
 configs/at91rm9200df_ext_bare_defconfig   | 1 +
 configs/at91rm9200df_ext_defconfig        | 1 +
 configs/at91sam9260dfc_defconfig          | 1 +
 configs/at91sam9260dfc_ext_bare_defconfig | 1 +
 configs/at91sam9260dfc_ext_defconfig      | 1 +
 configs/at91sam9260pf_defconfig           | 1 +
 configs/at91sam9261ek_defconfig           | 1 +
 configs/at91sam9261ek_ext_bare_defconfig  | 1 +
 configs/at91sam9261ek_ext_defconfig       | 1 +
 configs/at91sam9263ek_defconfig           | 1 +
 configs/at91sam9263ek_ext_bare_defconfig  | 1 +
 configs/at91sam9263ek_ext_defconfig       | 1 +
 configs/at91sam9g20dfc_defconfig          | 1 +
 configs/at91sam9g20dfc_ext_bare_defconfig | 1 +
 configs/at91sam9g20dfc_ext_defconfig      | 1 +
 configs/atngw100-base_defconfig           | 1 +
 configs/atngw100_defconfig                | 1 +
 configs/atstk1005_defconfig               | 1 +
 configs/atstk100x_defconfig               | 1 +
 configs/kb9202_defconfig                  | 1 +
 configs/v100sc2_defconfig                 | 1 +
 target/xtensa/defconfig                   | 1 +
 24 files changed, 24 insertions(+)

diff --git a/configs/arm_toolchain_defconfig b/configs/arm_toolchain_defconfig
index 529a3631b3..8e89107b4b 100644
--- a/configs/arm_toolchain_defconfig
+++ b/configs/arm_toolchain_defconfig
@@ -714,6 +714,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/generic/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91rm9200df_defconfig b/configs/at91rm9200df_defconfig
index e4c0b0ef62..e004b21c2d 100644
--- a/configs/at91rm9200df_defconfig
+++ b/configs/at91rm9200df_defconfig
@@ -839,6 +839,7 @@ BR2_PACKAGE_LIBXML2=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91rm9200df_ext_bare_defconfig b/configs/at91rm9200df_ext_bare_defconfig
index 65a640b23e..032064a842 100644
--- a/configs/at91rm9200df_ext_bare_defconfig
+++ b/configs/at91rm9200df_ext_bare_defconfig
@@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91rm9200df_ext_defconfig b/configs/at91rm9200df_ext_defconfig
index 6a39002f53..35251a3628 100644
--- a/configs/at91rm9200df_ext_defconfig
+++ b/configs/at91rm9200df_ext_defconfig
@@ -765,6 +765,7 @@ BR2_PACKAGE_LIBXML2=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9260dfc_defconfig b/configs/at91sam9260dfc_defconfig
index 8fb7f0ea1a..b571c8030c 100644
--- a/configs/at91sam9260dfc_defconfig
+++ b/configs/at91sam9260dfc_defconfig
@@ -853,6 +853,7 @@ BR2_PACKAGE_LIBXML2=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9260dfc_ext_bare_defconfig b/configs/at91sam9260dfc_ext_bare_defconfig
index 6e4d47883e..e1ace69ca6 100644
--- a/configs/at91sam9260dfc_ext_bare_defconfig
+++ b/configs/at91sam9260dfc_ext_bare_defconfig
@@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91sam9260dfc_ext_defconfig b/configs/at91sam9260dfc_ext_defconfig
index 22287bae98..c430d3db84 100644
--- a/configs/at91sam9260dfc_ext_defconfig
+++ b/configs/at91sam9260dfc_ext_defconfig
@@ -773,6 +773,7 @@ BR2_PACKAGE_LIBXML2=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9260pf_defconfig b/configs/at91sam9260pf_defconfig
index 396adeea9f..a2b86951bb 100644
--- a/configs/at91sam9260pf_defconfig
+++ b/configs/at91sam9260pf_defconfig
@@ -548,6 +548,7 @@ BR2_SCRIPTING_SUPPORT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9261ek_defconfig b/configs/at91sam9261ek_defconfig
index 73fc09cb72..1cfc2e7cfe 100644
--- a/configs/at91sam9261ek_defconfig
+++ b/configs/at91sam9261ek_defconfig
@@ -904,6 +904,7 @@ BR2_PACKAGE_LIBXSLT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9261ek_ext_bare_defconfig b/configs/at91sam9261ek_ext_bare_defconfig
index 316c15ed67..5e5e22da2c 100644
--- a/configs/at91sam9261ek_ext_bare_defconfig
+++ b/configs/at91sam9261ek_ext_bare_defconfig
@@ -638,6 +638,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91sam9261ek_ext_defconfig b/configs/at91sam9261ek_ext_defconfig
index 4bb96f13ac..362680b49a 100644
--- a/configs/at91sam9261ek_ext_defconfig
+++ b/configs/at91sam9261ek_ext_defconfig
@@ -861,6 +861,7 @@ BR2_PACKAGE_LIBXSLT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9263ek_defconfig b/configs/at91sam9263ek_defconfig
index cdbeaa393d..a670b41cc4 100644
--- a/configs/at91sam9263ek_defconfig
+++ b/configs/at91sam9263ek_defconfig
@@ -901,6 +901,7 @@ BR2_PACKAGE_LIBXSLT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9263ek_ext_bare_defconfig b/configs/at91sam9263ek_ext_bare_defconfig
index 3e57789b69..bc6f62623c 100644
--- a/configs/at91sam9263ek_ext_bare_defconfig
+++ b/configs/at91sam9263ek_ext_bare_defconfig
@@ -637,6 +637,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91sam9263ek_ext_defconfig b/configs/at91sam9263ek_ext_defconfig
index 944811fafd..4a59ea61a5 100644
--- a/configs/at91sam9263ek_ext_defconfig
+++ b/configs/at91sam9263ek_ext_defconfig
@@ -823,6 +823,7 @@ BR2_PACKAGE_LIBXSLT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9g20dfc_defconfig b/configs/at91sam9g20dfc_defconfig
index 710639bc33..a57dcffed7 100644
--- a/configs/at91sam9g20dfc_defconfig
+++ b/configs/at91sam9g20dfc_defconfig
@@ -769,6 +769,7 @@ BR2_PACKAGE_EXPAT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/at91sam9g20dfc_ext_bare_defconfig b/configs/at91sam9g20dfc_ext_bare_defconfig
index 4db69f3751..3977dc9874 100644
--- a/configs/at91sam9g20dfc_ext_bare_defconfig
+++ b/configs/at91sam9g20dfc_ext_bare_defconfig
@@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/at91sam9g20dfc_ext_defconfig b/configs/at91sam9g20dfc_ext_defconfig
index a2f34a2f30..632f2d1c68 100644
--- a/configs/at91sam9g20dfc_ext_defconfig
+++ b/configs/at91sam9g20dfc_ext_defconfig
@@ -773,6 +773,7 @@ BR2_PACKAGE_LIBXML2=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/atngw100-base_defconfig b/configs/atngw100-base_defconfig
index cd5a6767fa..15d779a0b9 100644
--- a/configs/atngw100-base_defconfig
+++ b/configs/atngw100-base_defconfig
@@ -698,6 +698,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)"
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atngw100-base/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig
index 367bcdc5b1..ecaf774109 100644
--- a/configs/atngw100_defconfig
+++ b/configs/atngw100_defconfig
@@ -688,6 +688,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)"
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atngw100/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/atstk1005_defconfig b/configs/atstk1005_defconfig
index 50e013e3f5..6b7a7b6d4c 100644
--- a/configs/atstk1005_defconfig
+++ b/configs/atstk1005_defconfig
@@ -731,6 +731,7 @@ BR2_PACKAGE_ZLIB=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atstk1005/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/atstk100x_defconfig b/configs/atstk100x_defconfig
index df30b05c2c..1a27f1af4e 100644
--- a/configs/atstk100x_defconfig
+++ b/configs/atstk100x_defconfig
@@ -834,6 +834,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)"
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atstk100x/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 BR2_TARGET_ROOTFS_EXT2=y
diff --git a/configs/kb9202_defconfig b/configs/kb9202_defconfig
index b1ec3233c7..e66348b703 100644
--- a/configs/kb9202_defconfig
+++ b/configs/kb9202_defconfig
@@ -654,6 +654,7 @@ BR2_GAMES=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/KwikByte/kb9202/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/configs/v100sc2_defconfig b/configs/v100sc2_defconfig
index 309b80e4b5..b139c277f9 100644
--- a/configs/v100sc2_defconfig
+++ b/configs/v100sc2_defconfig
@@ -685,6 +685,7 @@ BR2_PACKAGE_LIBXSLT=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/valka/device_table.txt"
 # BR2_TARGET_ROOTFS_CRAMFS is not set
 # BR2_TARGET_ROOTFS_CLOOP is not set
 # BR2_TARGET_ROOTFS_EXT2 is not set
diff --git a/target/xtensa/defconfig b/target/xtensa/defconfig
index f03f7a6d9b..49b7eb3fd4 100644
--- a/target/xtensa/defconfig
+++ b/target/xtensa/defconfig
@@ -104,6 +104,7 @@ BR2_PACKAGE_PORTMAP=y
 #
 # filesystem for target device
 #
+BR2_ROOTFS_DEVICE_TABLE="target/device/xtensa/device_table.txt"
 BR2_TARGET_ROOTFS_CPIO=y
 BR2_TARGET_ROOTFS_CPIO_GZIP=y
 BR2_TARGET_ROOTFS_INITRAMFS=y