2 # config.devices - Common build instructions for devices
6 # We build up a list of device node names in DEVICES
7 # We then iterate through this list creating files with names that
8 # will be properly converted to device nodes in the file system.
10 # We also supply a list of flash device names in FLASH_DEVICES and these
11 # are automatically prepended with the flash/ directory prefix and set
12 # to system permissions.
14 # In addition to just a list of device names, we can also accept some command
15 # line options which allow us to alter the permissions on the created file.
16 # We have options to alter the group as well, but the chgrp command will
17 # fail in all liklihood. Finally there is the reset option which reverts
18 # permissions back to their pre-permissions days of 644 and reverts the group
22 SUDO ?= sudo -p "Enter root password for building dev nodes : "
24 # Some shorthand device permission setups
25 DEVICE_PUBLIC= -group=root -mode=0666
26 DEVICE_PRIVATE= -group=root -mode=0600
27 DEVICE_SYSTEM= -group=root -mode=0660
28 DEVICE_KMEM= -group=kmem -mode=0640
29 DEVICE_TTY= -group=tty -mode=0666
30 DEVICE_CONS= -group=tty -mode=0600
31 DEVICE_DIALOUT= -group=dialout -mode=0660
32 DEVICE_DIP= -group=dip -mode=0660
33 DEVICE_MOUSE= -group=root -mode=0660
34 DEVICE_PRINTER= -group=lp -mode=0660
35 DEVICE_FLOPPY= -group=floppy -mode=0660
36 DEVICE_DISK= -group=disk -mode=0660
37 DEVICE_SCSI= -group=root -mode=0600
38 DEVICE_CDROM= -group=cdrom -mode=0660
39 DEVICE_TAPE= -group=tape -mode=0660
40 DEVICE_AUDIO= -group=audio -mode=0660
41 DEVICE_VIDEO= -group=video -mode=0660
42 DEVICE_IBCS2= -group=root -mode=0666
43 DEVICE_SCANNER= -group=root -mode=0666
44 DEVICE_CODA= -group=root -mode=0600
45 DEVICE_IPSEC= -group=root -mode=0200
46 DEVICE_READABLE= -group=root -mode=0444
47 DEVICE_PRIVREAD= -group=root -mode=0644
48 DEVICE_CRYPTO= -group=crypto -mode=0666
49 DEVICE_PTY= -group=tty -mode=0620
50 DEVICE_TUN= -group=root -mode=0700
51 DEVICE_INPUT= -group=root -mode=0640
53 ifeq ($(filter-out linux-2.0%, $(LINUXDIR)),)
54 DEVICES += $(DEVICE_CONS) console,c,4,0
56 DEVICES += $(DEVICE_CONS) console,c,5,1
57 DEVICES_UDEV += $(DEVICES_CONS) console,c,5,1
60 ifdef CONFIG_IXP400_LIB
61 DEVICES += $(DEVICE_SYSTEM) \
63 DEVICES_UDEV += $(DEVICE_SYSTEM) \
67 ifneq ($(CONFIG_SNAPDOG)$(CONFIG_WATCHDOG),)
68 DEVICES += $(DEVICE_CRYPTO) watchdog,c,10,130
69 DEVICES_UDEV += $(DEVICE_CRYPTO) watchdog,c,10,130
73 DEVICES += $(DEVICE_PRIVATE) ledman,c,126,0
74 DEVICES_UDEV += $(DEVICE_PRIVATE) ledman,c,126,0
78 DEVICES += $(DEVICE_CRYPTO) spi,c,10,135
82 DEVICES += $(DEVICE_INPUT) \
83 input/event0,c,13,64 input/event1,c,13,65 \
84 input/event2,c,13,66 input/event3,c,13,67
87 # Devices which use LILO to build need HDD nodes not managed by
88 # udev (since during build it runs with init=lilo)
89 ifdef CONFIG_USER_LILO_LILO
90 DEVICES_UDEV += $(DEVICE_DISK) \
92 hda1,b,3,1 hda2,b,3,2 hda3,b,3,3 hda4,b,3,4
93 DEVICES_UDEV += $(DEVICE_DISK) \
94 sda,b,8,0 sda1,b,8,1 sda2,b,8,2
97 # This concludes the list of device nodes we need to create for udev.
98 # These will only get created if /lib/udev/devices exist
99 DEVICES_UDEV += $(DEVICE_PUBLIC) null,c,1,3 zero,c,1,5
101 # Devices that are always present.
103 $(DEVICE_KMEM) mem,c,1,1 kmem,c,1,2 \
104 $(DEVICE_PUBLIC) null,c,1,3 zero,c,1,5 \
105 $(DEVICE_TTY) tty,c,5,0
107 ifdef CONFIG_POOR_ENTROPY
108 DEVICES += $(DEVICE_PRIVREAD) urandom,c,1,9 random,c,1,9
110 DEVICES += $(DEVICE_PRIVREAD) urandom,c,1,9 random,c,1,8
113 # Devices that depend on config options.
114 # Sorted by major/minor
116 ifdef CONFIG_BLK_DEV_RAM
117 DEVICES += $(DEVICE_KMEM) \
118 ram0,b,1,0 ram1,b,1,1 ram2,b,1,2 ram3,b,1,3
122 DEVICES += $(DEVICE_DISK) \
124 hda1,b,3,1 hda2,b,3,2 hda3,b,3,3 hda4,b,3,4 \
126 hdb1,b,3,65 hdb2,b,3,66 hdb3,b,3,67 hdb4,b,3,68 \
128 hdc1,b,22,1 hdc2,b,22,2 hdc3,b,22,3 hdc4,b,22,4 \
130 hdd1,b,22,65 hdd2,b,22,66 hdd3,b,22,67 hdd4,b,22,68
134 DEVICES += $(DEVICE_CONS) \
135 tty0,c,4,0 tty1,c,4,1 tty2,c,4,2 tty3,c,4,3
138 ifneq ($(CONFIG_SERIAL)$(CONFIG_SERIAL_8250)$(CONFIG_SERIAL_KS8695)$(CONFIG_COLDFIRE_SERIAL)$(CONFIG_SERIAL_MCF),)
139 DEVICES += $(DEVICE_DIALOUT) \
140 ttyS0,c,4,64 ttyS1,c,4,65 \
141 cua0,c,5,64 cua1,c,5,65
144 ifdef CONFIG_UNIX98_PTYS
145 DEVICES += $(DEVICE_TTY) ptmx,c,5,2
148 ifdef CONFIG_BLK_DEV_SD
149 DEVICES += $(DEVICE_DISK) \
150 sda,b,8,0 sda1,b,8,1 sda2,b,8,2 \
151 sda3,b,8,3 sda4,b,8,4 sda5,b,8,5 \
152 sda6,b,8,6 sda7,b,8,7 sda8,b,8,8 \
153 sda9,b,8,9 sda10,b,8,10 sda11,b,8,11 \
154 sdb,b,8,16 sdb1,b,8,17 sdb2,b,8,18 \
155 sdb3,b,8,19 sdb4,b,8,20 sdb5,b,8,21 \
156 sdc,b,8,32 sdc1,b,8,33 sdc2,b,8,34 \
157 sdc3,b,8,35 sdc4,b,8,36 sdc5,b,8,37 \
158 sdd,b,8,48 sdd1,b,8,49 sdd2,b,8,50 \
159 sdd3,b,8,51 sdd4,b,8,52 sdd5,b,8,53 \
160 sde,b,8,64 sde1,b,8,65 sde2,b,8,66 \
161 sde3,b,8,67 sde4,b,8,68 sde5,b,8,69 \
162 sdf,b,8,80 sdf1,b,8,81 sdf2,b,8,82 \
163 sdf3,b,8,83 sdf4,b,8,84 sdf5,b,8,85
167 DEVICES += $(DEVICE_CRYPTO) crypto,c,10,70
170 ifneq ($(CONFIG_RTC_INTF_DEV)$(CONFIG_RTC_DRV_SH)$(CONFIG_RTC_DRV_DS1302),)
171 DEVICES += $(DEVICE_PRIVATE) rtc,c,254,0
173 ifneq ($(CONFIG_RTC)$(CONFIG_M41T11M6)$(CONFIG_RTC_DRV_M41T11)$(CONFIG_NVRAM)$(CONFIG_SH_RTC),)
174 DEVICES += $(DEVICE_CRYPTO) rtc,c,10,135
179 DEVICES += $(DEVICE_TUN) net/tun,c,10,200
182 ifdef CONFIG_SOUND_OSS
183 DEVICES += $(DEVICE_AUDIO) \
202 ifneq ($(CONFIG_MODULES_CRYPTO_HIFN7901)$(CONFIG_MODULES_CRYPTO_HIFN7951)$(CONFIG_MODULES_CRYPTO_SAFENET),)
203 DEVICES += $(DEVICE_CRYPTO) hifn0,c,28,0
206 ifdef CONFIG_BLK_DEV_BLKMEM
207 DEVICES += $(DEVICE_KMEM) \
208 rom0,b,31,0 rom1,b,31,1 \
209 rom2,b,31,2 rom3,b,31,3 \
210 rom4,b,31,4 rom5,b,31,5 \
211 rom6,b,31,6 rom7,b,31,7 \
212 rom8,b,31,8 rom9,b,31,9
215 ifneq ($(CONFIG_MTD_BLOCK)$(CONFIG_MTD_BLOCK_RO),)
216 DEVICES += $(DEVICE_KMEM) \
230 DEVICES += $(DEVICE_IPSEC) ipsec,c,36,10
233 ifdef CONFIG_MODULES_CRYPTO_SAFENET
234 DEVICES += $(DEVICE_CRYPTO) cryptic,c,44,0
237 ifdef CONFIG_VIDEO_DEV
238 DEVICES += $(DEVICE_VIDEO) \
239 video,c,81,0 video0,c,81,0 video1,c,81,1
242 ifdef CONFIG_MTD_CHAR
243 DEVICES += $(DEVICE_KMEM) \
244 mtd0,c,90,0 mtdr0,c,90,1 \
245 mtd1,c,90,2 mtdr1,c,90,3 \
246 mtd2,c,90,4 mtdr2,c,90,5 \
247 mtd3,c,90,6 mtdr3,c,90,7 \
248 mtd4,c,90,8 mtdr4,c,90,9 \
249 mtd5,c,90,10 mtdr5,c,90,11 \
250 mtd6,c,90,12 mtdr6,c,90,13 \
251 mtd7,c,90,14 mtdr7,c,90,15 \
252 mtd8,c,90,16 mtdr8,c,90,17 \
253 mtd9,c,90,18 mtdr9,c,90,19
257 DEVICES += $(DEVICE_PUBLIC) \
259 nftla1,b,93,1 nftla2,b,93,2 \
260 nftla3,b,93,3 nftla4,b,93,4
263 ifdef CONFIG_BLK_DEV_LOOP
264 DEVICES += $(DEVICE_DISK) \
276 DEVICES += $(DEVICE_DIP) ppp,c,108,0
279 ifneq ($(CONFIG_PCMCIA_IVPN)$(CONFIG_PCMCIA_KS),)
280 DEVICES += $(DEVICE_SYSTEM) \
281 io8,c,120,0 io16,c,120,1 \
282 mem8,c,120,2 mem16,c,120,3 \
283 attr8,c,120,4 attr16,c,120,5
286 ifdef CONFIG_MODULES_LCD_LCDTXT
287 DEVICES += $(DEVICE_SYSTEM) \
290 ifdef CONFIG_NEXCOMM_LCM
291 DEVICES += $(DEVICE_SYSTEM) \
295 ifdef CONFIG_MODULES_KEYPAD_KEYPAD
296 DEVICES += $(DEVICE_SYSTEM) \
300 ifdef CONFIG_MODULES_QTAB_SMARTREADER
301 DEVICES += $(DEVICE_SYSTEM) \
302 cardpro0,c,125,0 cardpro1,c,125,1
305 ifdef CONFIG_MODULES_SGIO
306 DEVICES += $(DEVICE_SYSTEM) \
311 DEVICES += $(DEVICE_KMEM) \
312 xymem,c,127,0 xmem,c,127,1 ymem,c,127,2
316 DEVICES += $(DEVICE_TTY) \
317 ttyACM0,c,166,0 ttyACM1,c,166,1 \
318 ttyACM2,c,166,2 ttyACM3,c,166,3 \
319 cuacm0,c,167,0 cuacm1,c,167,1 \
320 cuacm2,c,167,2 cuacm3,c,167,3
323 ifdef CONFIG_USB_SERIAL
324 DEVICES += $(DEVICE_TTY) \
325 ttyUSB0,c,188,0 ttyUSB1,c,188,1 \
326 ttyUSB2,c,188,2 ttyUSB3,c,188,3 \
327 cuusb0,c,189,0 cuusb1,c,189,1 \
328 cuusb2,c,189,2 cuusb3,c,189,3
331 ifdef CONFIG_USB_PRINTER
332 DEVICES += $(DEVICE_PRINTER) \
333 usblp0,c,180,0 usblp1,c,180,1 \
334 usblp2,c,180,2 usblp3,c,180,3 \
335 usblp4,c,180,4 usblp5,c,180,5 \
336 usblp6,c,180,6 usblp7,c,180,7 \
337 usblp8,c,180,8 usblp9,c,180,9 \
338 usblp10,c,180,10 usblp11,c,180,11 \
339 usblp12,c,180,12 usblp13,c,180,13 \
340 usblp14,c,180,14 usblp15,c,180,15
343 ifneq ($(CONFIG_SH_SCI)$(CONFIG_SERIAL_SH_SCI),)
344 ifdef CONFIG_SH_SCI_REVERSE
345 DEVICES += $(DEVICE_TTY) \
347 cua0,c,204,9 cua1,c,204,8 \
348 ttySC0,c,204,8 ttySC1,c,204,9 ttySC2,c,204,10
350 DEVICES += $(DEVICE_TTY) \
351 ttyS0,c,204,8 ttyS1,c,204,9 \
352 cua0,c,204,8 cua1,c,204,9 \
353 ttySC0,c,204,8 ttySC1,c,204,9 ttySC2,c,204,10
357 ifdef CONFIG_SERIAL_EP93XX
358 DEVICES += $(DEVICE_TTY) \
359 ttyS0,c,204,17 ttyS1,c,204,16 \
360 cua0,c,204,17 cua1,c,204,16 \
361 ttyAM0,c,204,16 ttyAM1,c,204,17
363 ifdef CONFIG_SERIAL_IMX
364 DEVICES += $(DEVICE_TTY) \
365 ttymxc0,c,207,16 ttymxc1,c,207,17
368 ifdef CONFIG_I2C_CHARDEV
369 DEVICES += $(DEVICE_PRIVATE) \
370 i2c-0,c,89,0 i2c-1,c,89,1 i2c-2,c,89,2 i2c-3,c,89,3 \
371 i2c-4,c,89,4 i2c-5,c,89,5 i2c-6,c,89,6 i2c-7,c,89,7
374 ifdef CONFIG_IXP425_CODELET_DSPENG
375 DEVICES += $(DEVICE_SYSTEM) \
376 ixDspCodeletModule,c,253,0
379 ifneq ($(CONFIG_LINUXDIR),linux-2.6.x)
380 ifneq ($(CONFIG_LINUXDIR),linux-3.x)
381 NON_LINUX_2_6_X = yes
385 ifneq ($(CONFIG_LEGACY_PTYS)$(NON_LINUX_2_6_X),)
386 DEVICE_PTY_16 = $(DEVICE_PTY) \
387 ptyp0,c,2,0 ptyp1,c,2,1 ptyp2,c,2,2 ptyp3,c,2,3 \
388 ptyp4,c,2,4 ptyp5,c,2,5 ptyp6,c,2,6 ptyp7,c,2,7 \
389 ptyp8,c,2,8 ptyp9,c,2,9 ptypa,c,2,10 ptypb,c,2,11 \
390 ptypc,c,2,12 ptypd,c,2,13 ptype,c,2,14 ptypf,c,2,15 \
392 ttyp0,c,3,0 ttyp1,c,3,1 ttyp2,c,3,2 ttyp3,c,3,3 \
393 ttyp4,c,3,4 ttyp5,c,3,5 ttyp6,c,3,6 ttyp7,c,3,7 \
394 ttyp8,c,3,8 ttyp9,c,3,9 ttypa,c,3,10 ttypb,c,3,11 \
395 ttypc,c,3,12 ttypd,c,3,13 ttype,c,3,14 ttypf,c,3,15
397 DEVICE_PTY_32 = $(DEVICE_PTY_16) \
398 ptyq0,c,2,16 ptyq1,c,2,17 ptyq2,c,2,18 ptyq3,c,2,19 \
399 ptyq4,c,2,20 ptyq5,c,2,21 ptyq6,c,2,22 ptyq7,c,2,23 \
400 ptyq8,c,2,24 ptyq9,c,2,25 ptyqa,c,2,26 ptyqb,c,2,27 \
401 ptyqc,c,2,28 ptyqd,c,2,29 ptyqe,c,2,30 ptyqf,c,2,31 \
403 ttyq0,c,3,16 ttyq1,c,3,17 ttyq2,c,3,18 ttyq3,c,3,19 \
404 ttyq4,c,3,20 ttyq5,c,3,21 ttyq6,c,3,22 ttyq7,c,3,23 \
405 ttyq8,c,3,24 ttyq9,c,3,25 ttyqa,c,3,26 ttyqb,c,3,27 \
406 ttyqc,c,3,28 ttyqd,c,3,29 ttyqe,c,3,30 ttyqf,c,3,31
408 DEVICE_PTY_64 = $(DEVICE_PTY_32) \
409 ptyr0,c,2,32 ptyr1,c,2,33 ptyr2,c,2,34 ptyr3,c,2,35 \
410 ptyr4,c,2,36 ptyr5,c,2,37 ptyr6,c,2,38 ptyr7,c,2,39 \
411 ptyr8,c,2,40 ptyr9,c,2,41 ptyra,c,2,42 ptyrb,c,2,43 \
412 ptyrc,c,2,44 ptyrd,c,2,45 ptyre,c,2,46 ptyrf,c,2,47 \
414 ptys0,c,2,48 ptys1,c,2,49 ptys2,c,2,50 ptys3,c,2,51 \
415 ptys4,c,2,52 ptys5,c,2,53 ptys6,c,2,54 ptys7,c,2,55 \
416 ptys8,c,2,56 ptys9,c,2,57 ptysa,c,2,58 ptysb,c,2,59 \
417 ptysc,c,2,60 ptysd,c,2,61 ptyse,c,2,62 ptysf,c,2,63 \
419 ttyr0,c,3,32 ttyr1,c,3,33 ttyr2,c,3,34 ttyr3,c,3,35 \
420 ttyr4,c,3,36 ttyr5,c,3,37 ttyr6,c,3,38 ttyr7,c,3,39 \
421 ttyr8,c,3,40 ttyr9,c,3,41 ttyra,c,3,42 ttyrb,c,3,43 \
422 ttyrc,c,3,44 ttyrd,c,3,45 ttyre,c,3,46 ttyrf,c,3,47 \
424 ttys0,c,3,48 ttys1,c,3,49 ttys2,c,3,50 ttys3,c,3,51 \
425 ttys4,c,3,52 ttys5,c,3,53 ttys6,c,3,54 ttys7,c,3,55 \
426 ttys8,c,3,56 ttys9,c,3,57 ttysa,c,3,58 ttysb,c,3,59 \
427 ttysc,c,3,60 ttysd,c,3,61 ttyse,c,3,62 ttysf,c,3,63
434 # MAKE_DIR macro, usage: MAKE_DIR dir
435 # MAKE_DEV_DIR makes a directory under /dev (or the appropriate udev dir)
437 MAKE_DIR = [ -d $(ROMFSDIR)/$(1) ] || mkdir -p $(ROMFSDIR)/$(1)
439 ifdef CONFIG_USER_UDEV
440 MAKE_DEV_DIR = $(call MAKE_DIR,lib/udev/devices/$(1))
442 MAKE_DEV_DIR = $(call MAKE_DIR,dev/$(1))
446 # If you can chgrp properly add "chgrp $$group $$node;" below the touch command
451 ifdef CONFIG_USER_UDEV
452 $(call MAKE_DIR,lib/udev/devices)
454 ifdef CONFIG_OPROFILE
455 $(call MAKE_DEV_DIR,oprofile)
458 # a function var, usage: MAKE_DEVICES sudo basedir devices
461 for i in -reset $(3); \
464 -mode=*) mode="`echo $$i | cut -f2 -d=`" ;; \
465 -group=*) group="`echo $$i | cut -f2 -d=`" ;; \
466 -reset) mode=644; group=root ;; \
468 n=`echo $$i | sed 's/=.*//g'` ; \
470 $(call MAKE_DIR,$(2)/$$d); \
473 if [ '$(1)' ]; then \
474 node=$(ROMFSDIR)/$(2)/$$d/`basename $$i` ; \
475 $(1) rm -f `echo $$node | sed 's/,.*//g'`* ; \
476 echo mknod `echo $$node | sed 's/,/ /g'`; \
477 $(1) mknod `echo $$node | sed 's/,/ /g'`; \
478 $(1) chmod $$mode `echo $$node | sed 's/,.*$$//g'`; \
480 node=$(ROMFSDIR)/$(2)/$$d/@`basename $$i` ; \
481 rm -f `echo $$node | sed 's/,.*//g'`* ; \
482 echo touching $$node; \
484 chmod $$mode $$node; \
488 l=`echo $$i | sed 's/.*=//g'` ; \
489 $(LN) -s $$l $(ROMFSDIR)/$(2)/$$n; \
493 $(1) chmod $$mode `echo $$node | sed 's/,.*$$//g'`; \
503 romfs_dev: romfs_dirs
504 ifdef CONFIG_USER_UDEV
505 $(ROMFSDIR)/../tools/build-udev-perms.sh $(DEVICES)
506 $(call MAKE_DEVICES,,dev,$(DEVICES_UDEV))
507 $(call MAKE_DEVICES,,lib/udev/devices,$(DEVICES_UDEV) $(DEVICES) $(DEVICE_SYSTEM) $(patsubst %,flash/%,$(FLASH_DEVICES)))
509 $(call MAKE_DEVICES,,dev,$(DEVICES) $(DEVICE_SYSTEM) $(patsubst %,flash/%,$(FLASH_DEVICES)))
512 .PHONY: romfs_dev_sudo
513 romfs_dev_sudo: romfs_dirs
514 ifdef CONFIG_USER_UDEV
515 $(ROMFSDIR)/../tools/build-udev-perms.sh $(DEVICES)
516 $(call MAKE_DEVICES,$(SUDO),dev,$(DEVICES_UDEV))
517 $(call MAKE_DEVICES,$(SUDO),lib/udev/devices,$(DEVICES_UDEV) $(DEVICES) $(DEVICE_SYSTEM) $(patsubst %,flash/%,$(FLASH_DEVICES)))
519 $(call MAKE_DEVICES,$(SUDO),dev,$(DEVICES) $(DEVICE_SYSTEM) $(patsubst %,flash/%,$(FLASH_DEVICES)))