diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-28 18:50:09 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-28 18:50:09 -0400 |
| commit | 9dfb7808fb05643b0d06df7411b94d9546696bf1 (patch) | |
| tree | aa1a9cc1e79ae66f6cbb0fe39d79a80ca76331e8 /drivers/char | |
| parent | c45154a3b1fecdbb51b5462c9f730b44e62b83a5 (diff) | |
| parent | 20731945ae743034353a88c307920d1f16cf8ac8 (diff) | |
Merge branch 'master'
Diffstat (limited to 'drivers/char')
| -rw-r--r-- | drivers/char/dsp56k.c | 2 | ||||
| -rw-r--r-- | drivers/char/ftape/zftape/zftape-init.c | 12 | ||||
| -rw-r--r-- | drivers/char/ip2main.c | 10 | ||||
| -rw-r--r-- | drivers/char/ipmi/ipmi_devintf.c | 2 | ||||
| -rw-r--r-- | drivers/char/istallion.c | 3 | ||||
| -rw-r--r-- | drivers/char/lp.c | 2 | ||||
| -rw-r--r-- | drivers/char/mem.c | 3 | ||||
| -rw-r--r-- | drivers/char/misc.c | 2 | ||||
| -rw-r--r-- | drivers/char/nvram.c | 110 | ||||
| -rw-r--r-- | drivers/char/ppdev.c | 2 | ||||
| -rw-r--r-- | drivers/char/raw.c | 4 | ||||
| -rw-r--r-- | drivers/char/s3c2410-rtc.c | 20 | ||||
| -rw-r--r-- | drivers/char/snsc.c | 2 | ||||
| -rw-r--r-- | drivers/char/sonypi.c | 106 | ||||
| -rw-r--r-- | drivers/char/stallion.c | 4 | ||||
| -rw-r--r-- | drivers/char/tipar.c | 2 | ||||
| -rw-r--r-- | drivers/char/tty_io.c | 10 | ||||
| -rw-r--r-- | drivers/char/vc_screen.c | 10 | ||||
| -rw-r--r-- | drivers/char/viotape.c | 4 | ||||
| -rw-r--r-- | drivers/char/watchdog/s3c2410_wdt.c | 30 |
20 files changed, 231 insertions, 109 deletions
diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c index 26271e3ca823..8693835cb2d5 100644 --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c | |||
| @@ -515,7 +515,7 @@ static int __init dsp56k_init_driver(void) | |||
| 515 | err = PTR_ERR(dsp56k_class); | 515 | err = PTR_ERR(dsp56k_class); |
| 516 | goto out_chrdev; | 516 | goto out_chrdev; |
| 517 | } | 517 | } |
| 518 | class_device_create(dsp56k_class, MKDEV(DSP56K_MAJOR, 0), NULL, "dsp56k"); | 518 | class_device_create(dsp56k_class, NULL, MKDEV(DSP56K_MAJOR, 0), NULL, "dsp56k"); |
| 519 | 519 | ||
| 520 | err = devfs_mk_cdev(MKDEV(DSP56K_MAJOR, 0), | 520 | err = devfs_mk_cdev(MKDEV(DSP56K_MAJOR, 0), |
| 521 | S_IFCHR | S_IRUSR | S_IWUSR, "dsp56k"); | 521 | S_IFCHR | S_IRUSR | S_IWUSR, "dsp56k"); |
diff --git a/drivers/char/ftape/zftape/zftape-init.c b/drivers/char/ftape/zftape/zftape-init.c index 5745b74044ec..821357ce7e0e 100644 --- a/drivers/char/ftape/zftape/zftape-init.c +++ b/drivers/char/ftape/zftape/zftape-init.c | |||
| @@ -331,27 +331,27 @@ KERN_INFO | |||
| 331 | 331 | ||
| 332 | zft_class = class_create(THIS_MODULE, "zft"); | 332 | zft_class = class_create(THIS_MODULE, "zft"); |
| 333 | for (i = 0; i < 4; i++) { | 333 | for (i = 0; i < 4; i++) { |
| 334 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i), NULL, "qft%i", i); | 334 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i), NULL, "qft%i", i); |
| 335 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i), | 335 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i), |
| 336 | S_IFCHR | S_IRUSR | S_IWUSR, | 336 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 337 | "qft%i", i); | 337 | "qft%i", i); |
| 338 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 4), NULL, "nqft%i", i); | 338 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i + 4), NULL, "nqft%i", i); |
| 339 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 4), | 339 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 4), |
| 340 | S_IFCHR | S_IRUSR | S_IWUSR, | 340 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 341 | "nqft%i", i); | 341 | "nqft%i", i); |
| 342 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 16), NULL, "zqft%i", i); | 342 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i + 16), NULL, "zqft%i", i); |
| 343 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 16), | 343 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 16), |
| 344 | S_IFCHR | S_IRUSR | S_IWUSR, | 344 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 345 | "zqft%i", i); | 345 | "zqft%i", i); |
| 346 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 20), NULL, "nzqft%i", i); | 346 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i + 20), NULL, "nzqft%i", i); |
| 347 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 20), | 347 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 20), |
| 348 | S_IFCHR | S_IRUSR | S_IWUSR, | 348 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 349 | "nzqft%i", i); | 349 | "nzqft%i", i); |
| 350 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 32), NULL, "rawqft%i", i); | 350 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i + 32), NULL, "rawqft%i", i); |
| 351 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 32), | 351 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 32), |
| 352 | S_IFCHR | S_IRUSR | S_IWUSR, | 352 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 353 | "rawqft%i", i); | 353 | "rawqft%i", i); |
| 354 | class_device_create(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 36), NULL, "nrawrawqft%i", i); | 354 | class_device_create(zft_class, NULL, MKDEV(QIC117_TAPE_MAJOR, i + 36), NULL, "nrawrawqft%i", i); |
| 355 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 36), | 355 | devfs_mk_cdev(MKDEV(QIC117_TAPE_MAJOR, i + 36), |
| 356 | S_IFCHR | S_IRUSR | S_IWUSR, | 356 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 357 | "nrawqft%i", i); | 357 | "nrawqft%i", i); |
diff --git a/drivers/char/ip2main.c b/drivers/char/ip2main.c index 9e4e26aef94e..d815d197dc3e 100644 --- a/drivers/char/ip2main.c +++ b/drivers/char/ip2main.c | |||
| @@ -721,8 +721,9 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize) | |||
| 721 | } | 721 | } |
| 722 | 722 | ||
| 723 | if ( NULL != ( pB = i2BoardPtrTable[i] ) ) { | 723 | if ( NULL != ( pB = i2BoardPtrTable[i] ) ) { |
| 724 | class_device_create(ip2_class, MKDEV(IP2_IPL_MAJOR, | 724 | class_device_create(ip2_class, NULL, |
| 725 | 4 * i), NULL, "ipl%d", i); | 725 | MKDEV(IP2_IPL_MAJOR, 4 * i), |
| 726 | NULL, "ipl%d", i); | ||
| 726 | err = devfs_mk_cdev(MKDEV(IP2_IPL_MAJOR, 4 * i), | 727 | err = devfs_mk_cdev(MKDEV(IP2_IPL_MAJOR, 4 * i), |
| 727 | S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, | 728 | S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, |
| 728 | "ip2/ipl%d", i); | 729 | "ip2/ipl%d", i); |
| @@ -732,8 +733,9 @@ ip2_loadmain(int *iop, int *irqp, unsigned char *firmware, int firmsize) | |||
| 732 | goto out_class; | 733 | goto out_class; |
| 733 | } | 734 | } |
| 734 | 735 | ||
| 735 | class_device_create(ip2_class, MKDEV(IP2_IPL_MAJOR, | 736 | class_device_create(ip2_class, NULL, |
| 736 | 4 * i + 1), NULL, "stat%d", i); | 737 | MKDEV(IP2_IPL_MAJOR, 4 * i + 1), |
| 738 | NULL, "stat%d", i); | ||
| 737 | err = devfs_mk_cdev(MKDEV(IP2_IPL_MAJOR, 4 * i + 1), | 739 | err = devfs_mk_cdev(MKDEV(IP2_IPL_MAJOR, 4 * i + 1), |
| 738 | S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, | 740 | S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, |
| 739 | "ip2/stat%d", i); | 741 | "ip2/stat%d", i); |
diff --git a/drivers/char/ipmi/ipmi_devintf.c b/drivers/char/ipmi/ipmi_devintf.c index a09ff1080687..7c0684deea06 100644 --- a/drivers/char/ipmi/ipmi_devintf.c +++ b/drivers/char/ipmi/ipmi_devintf.c | |||
| @@ -798,7 +798,7 @@ static void ipmi_new_smi(int if_num) | |||
| 798 | devfs_mk_cdev(dev, S_IFCHR | S_IRUSR | S_IWUSR, | 798 | devfs_mk_cdev(dev, S_IFCHR | S_IRUSR | S_IWUSR, |
| 799 | "ipmidev/%d", if_num); | 799 | "ipmidev/%d", if_num); |
| 800 | 800 | ||
| 801 | class_device_create(ipmi_class, dev, NULL, "ipmi%d", if_num); | 801 | class_device_create(ipmi_class, NULL, dev, NULL, "ipmi%d", if_num); |
| 802 | } | 802 | } |
| 803 | 803 | ||
| 804 | static void ipmi_smi_gone(int if_num) | 804 | static void ipmi_smi_gone(int if_num) |
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index 9c19e5435a11..e3ddbdb85a2f 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c | |||
| @@ -5246,7 +5246,8 @@ int __init stli_init(void) | |||
| 5246 | devfs_mk_cdev(MKDEV(STL_SIOMEMMAJOR, i), | 5246 | devfs_mk_cdev(MKDEV(STL_SIOMEMMAJOR, i), |
| 5247 | S_IFCHR | S_IRUSR | S_IWUSR, | 5247 | S_IFCHR | S_IRUSR | S_IWUSR, |
| 5248 | "staliomem/%d", i); | 5248 | "staliomem/%d", i); |
| 5249 | class_device_create(istallion_class, MKDEV(STL_SIOMEMMAJOR, i), | 5249 | class_device_create(istallion_class, NULL, |
| 5250 | MKDEV(STL_SIOMEMMAJOR, i), | ||
| 5250 | NULL, "staliomem%d", i); | 5251 | NULL, "staliomem%d", i); |
| 5251 | } | 5252 | } |
| 5252 | 5253 | ||
diff --git a/drivers/char/lp.c b/drivers/char/lp.c index 2afb9038dbc5..e57260525293 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c | |||
| @@ -805,7 +805,7 @@ static int lp_register(int nr, struct parport *port) | |||
| 805 | if (reset) | 805 | if (reset) |
| 806 | lp_reset(nr); | 806 | lp_reset(nr); |
| 807 | 807 | ||
| 808 | class_device_create(lp_class, MKDEV(LP_MAJOR, nr), NULL, | 808 | class_device_create(lp_class, NULL, MKDEV(LP_MAJOR, nr), NULL, |
| 809 | "lp%d", nr); | 809 | "lp%d", nr); |
| 810 | devfs_mk_cdev(MKDEV(LP_MAJOR, nr), S_IFCHR | S_IRUGO | S_IWUGO, | 810 | devfs_mk_cdev(MKDEV(LP_MAJOR, nr), S_IFCHR | S_IRUGO | S_IWUGO, |
| 811 | "printers/%d", nr); | 811 | "printers/%d", nr); |
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index f182752fe918..38be4b0dbd1c 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c | |||
| @@ -920,7 +920,8 @@ static int __init chr_dev_init(void) | |||
| 920 | 920 | ||
| 921 | mem_class = class_create(THIS_MODULE, "mem"); | 921 | mem_class = class_create(THIS_MODULE, "mem"); |
| 922 | for (i = 0; i < ARRAY_SIZE(devlist); i++) { | 922 | for (i = 0; i < ARRAY_SIZE(devlist); i++) { |
| 923 | class_device_create(mem_class, MKDEV(MEM_MAJOR, devlist[i].minor), | 923 | class_device_create(mem_class, NULL, |
| 924 | MKDEV(MEM_MAJOR, devlist[i].minor), | ||
| 924 | NULL, devlist[i].name); | 925 | NULL, devlist[i].name); |
| 925 | devfs_mk_cdev(MKDEV(MEM_MAJOR, devlist[i].minor), | 926 | devfs_mk_cdev(MKDEV(MEM_MAJOR, devlist[i].minor), |
| 926 | S_IFCHR | devlist[i].mode, devlist[i].name); | 927 | S_IFCHR | devlist[i].mode, devlist[i].name); |
diff --git a/drivers/char/misc.c b/drivers/char/misc.c index 0c8375165e29..3e4c0414a01a 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c | |||
| @@ -234,7 +234,7 @@ int misc_register(struct miscdevice * misc) | |||
| 234 | } | 234 | } |
| 235 | dev = MKDEV(MISC_MAJOR, misc->minor); | 235 | dev = MKDEV(MISC_MAJOR, misc->minor); |
| 236 | 236 | ||
| 237 | misc->class = class_device_create(misc_class, dev, misc->dev, | 237 | misc->class = class_device_create(misc_class, NULL, dev, misc->dev, |
| 238 | "%s", misc->name); | 238 | "%s", misc->name); |
| 239 | if (IS_ERR(misc->class)) { | 239 | if (IS_ERR(misc->class)) { |
| 240 | err = PTR_ERR(misc->class); | 240 | err = PTR_ERR(misc->class); |
diff --git a/drivers/char/nvram.c b/drivers/char/nvram.c index 1af733d07321..9e24bbd4090c 100644 --- a/drivers/char/nvram.c +++ b/drivers/char/nvram.c | |||
| @@ -32,9 +32,11 @@ | |||
| 32 | * added changelog | 32 | * added changelog |
| 33 | * 1.2 Erik Gilling: Cobalt Networks support | 33 | * 1.2 Erik Gilling: Cobalt Networks support |
| 34 | * Tim Hockin: general cleanup, Cobalt support | 34 | * Tim Hockin: general cleanup, Cobalt support |
| 35 | * 1.3 Jon Ringle: Comdial MP1000 support | ||
| 36 | * | ||
| 35 | */ | 37 | */ |
| 36 | 38 | ||
| 37 | #define NVRAM_VERSION "1.2" | 39 | #define NVRAM_VERSION "1.3" |
| 38 | 40 | ||
| 39 | #include <linux/module.h> | 41 | #include <linux/module.h> |
| 40 | #include <linux/config.h> | 42 | #include <linux/config.h> |
| @@ -45,6 +47,7 @@ | |||
| 45 | #define PC 1 | 47 | #define PC 1 |
| 46 | #define ATARI 2 | 48 | #define ATARI 2 |
| 47 | #define COBALT 3 | 49 | #define COBALT 3 |
| 50 | #define MP1000 4 | ||
| 48 | 51 | ||
| 49 | /* select machine configuration */ | 52 | /* select machine configuration */ |
| 50 | #if defined(CONFIG_ATARI) | 53 | #if defined(CONFIG_ATARI) |
| @@ -54,6 +57,9 @@ | |||
| 54 | # if defined(CONFIG_COBALT) | 57 | # if defined(CONFIG_COBALT) |
| 55 | # include <linux/cobalt-nvram.h> | 58 | # include <linux/cobalt-nvram.h> |
| 56 | # define MACH COBALT | 59 | # define MACH COBALT |
| 60 | # elif defined(CONFIG_MACH_MP1000) | ||
| 61 | # undef MACH | ||
| 62 | # define MACH MP1000 | ||
| 57 | # else | 63 | # else |
| 58 | # define MACH PC | 64 | # define MACH PC |
| 59 | # endif | 65 | # endif |
| @@ -112,6 +118,23 @@ | |||
| 112 | 118 | ||
| 113 | #endif | 119 | #endif |
| 114 | 120 | ||
| 121 | #if MACH == MP1000 | ||
| 122 | |||
| 123 | /* RTC in a MP1000 */ | ||
| 124 | #define CHECK_DRIVER_INIT() 1 | ||
| 125 | |||
| 126 | #define MP1000_CKS_RANGE_START 0 | ||
| 127 | #define MP1000_CKS_RANGE_END 111 | ||
| 128 | #define MP1000_CKS_LOC 112 | ||
| 129 | |||
| 130 | #define NVRAM_BYTES (128-NVRAM_FIRST_BYTE) | ||
| 131 | |||
| 132 | #define mach_check_checksum mp1000_check_checksum | ||
| 133 | #define mach_set_checksum mp1000_set_checksum | ||
| 134 | #define mach_proc_infos mp1000_proc_infos | ||
| 135 | |||
| 136 | #endif | ||
| 137 | |||
| 115 | /* Note that *all* calls to CMOS_READ and CMOS_WRITE must be done with | 138 | /* Note that *all* calls to CMOS_READ and CMOS_WRITE must be done with |
| 116 | * rtc_lock held. Due to the index-port/data-port design of the RTC, we | 139 | * rtc_lock held. Due to the index-port/data-port design of the RTC, we |
| 117 | * don't want two different things trying to get to it at once. (e.g. the | 140 | * don't want two different things trying to get to it at once. (e.g. the |
| @@ -915,6 +938,91 @@ atari_proc_infos(unsigned char *nvram, char *buffer, int *len, | |||
| 915 | 938 | ||
| 916 | #endif /* MACH == ATARI */ | 939 | #endif /* MACH == ATARI */ |
| 917 | 940 | ||
| 941 | #if MACH == MP1000 | ||
| 942 | |||
| 943 | static int | ||
| 944 | mp1000_check_checksum(void) | ||
| 945 | { | ||
| 946 | int i; | ||
| 947 | unsigned short sum = 0; | ||
| 948 | unsigned short expect; | ||
| 949 | |||
| 950 | for (i = MP1000_CKS_RANGE_START; i <= MP1000_CKS_RANGE_END; ++i) | ||
| 951 | sum += __nvram_read_byte(i); | ||
| 952 | |||
| 953 | expect = __nvram_read_byte(MP1000_CKS_LOC+1)<<8 | | ||
| 954 | __nvram_read_byte(MP1000_CKS_LOC); | ||
| 955 | return ((sum & 0xffff) == expect); | ||
| 956 | } | ||
| 957 | |||
| 958 | static void | ||
| 959 | mp1000_set_checksum(void) | ||
| 960 | { | ||
| 961 | int i; | ||
| 962 | unsigned short sum = 0; | ||
| 963 | |||
| 964 | for (i = MP1000_CKS_RANGE_START; i <= MP1000_CKS_RANGE_END; ++i) | ||
| 965 | sum += __nvram_read_byte(i); | ||
| 966 | __nvram_write_byte(sum >> 8, MP1000_CKS_LOC + 1); | ||
| 967 | __nvram_write_byte(sum & 0xff, MP1000_CKS_LOC); | ||
| 968 | } | ||
| 969 | |||
| 970 | #ifdef CONFIG_PROC_FS | ||
| 971 | |||
| 972 | #define SERVER_N_LEN 32 | ||
| 973 | #define PATH_N_LEN 32 | ||
| 974 | #define FILE_N_LEN 32 | ||
| 975 | #define NVRAM_MAGIC_SIG 0xdead | ||
| 976 | |||
| 977 | typedef struct NvRamImage | ||
| 978 | { | ||
| 979 | unsigned short int magic; | ||
| 980 | unsigned short int mode; | ||
| 981 | char fname[FILE_N_LEN]; | ||
| 982 | char path[PATH_N_LEN]; | ||
| 983 | char server[SERVER_N_LEN]; | ||
| 984 | char pad[12]; | ||
| 985 | } NvRam; | ||
| 986 | |||
| 987 | static int | ||
| 988 | mp1000_proc_infos(unsigned char *nvram, char *buffer, int *len, | ||
| 989 | off_t *begin, off_t offset, int size) | ||
| 990 | { | ||
| 991 | int checksum; | ||
| 992 | NvRam* nv = (NvRam*)nvram; | ||
| 993 | |||
| 994 | spin_lock_irq(&rtc_lock); | ||
| 995 | checksum = __nvram_check_checksum(); | ||
| 996 | spin_unlock_irq(&rtc_lock); | ||
| 997 | |||
| 998 | PRINT_PROC("Checksum status: %svalid\n", checksum ? "" : "not "); | ||
| 999 | |||
| 1000 | switch( nv->mode ) | ||
| 1001 | { | ||
| 1002 | case 0 : | ||
| 1003 | PRINT_PROC( "\tMode 0, tftp prompt\n" ); | ||
| 1004 | break; | ||
| 1005 | case 1 : | ||
| 1006 | PRINT_PROC( "\tMode 1, booting from disk\n" ); | ||
| 1007 | break; | ||
| 1008 | case 2 : | ||
| 1009 | PRINT_PROC( "\tMode 2, Alternate boot from disk /boot/%s\n", nv->fname ); | ||
| 1010 | break; | ||
| 1011 | case 3 : | ||
| 1012 | PRINT_PROC( "\tMode 3, Booting from net:\n" ); | ||
| 1013 | PRINT_PROC( "\t\t%s:%s%s\n",nv->server, nv->path, nv->fname ); | ||
| 1014 | break; | ||
| 1015 | default: | ||
| 1016 | PRINT_PROC( "\tInconsistant nvram?\n" ); | ||
| 1017 | break; | ||
| 1018 | } | ||
| 1019 | |||
| 1020 | return 1; | ||
| 1021 | } | ||
| 1022 | #endif | ||
| 1023 | |||
| 1024 | #endif /* MACH == MP1000 */ | ||
| 1025 | |||
| 918 | MODULE_LICENSE("GPL"); | 1026 | MODULE_LICENSE("GPL"); |
| 919 | 1027 | ||
| 920 | EXPORT_SYMBOL(__nvram_read_byte); | 1028 | EXPORT_SYMBOL(__nvram_read_byte); |
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index 0e22880432bc..306ee0f091a4 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c | |||
| @@ -752,7 +752,7 @@ static struct file_operations pp_fops = { | |||
| 752 | 752 | ||
| 753 | static void pp_attach(struct parport *port) | 753 | static void pp_attach(struct parport *port) |
| 754 | { | 754 | { |
| 755 | class_device_create(ppdev_class, MKDEV(PP_MAJOR, port->number), | 755 | class_device_create(ppdev_class, NULL, MKDEV(PP_MAJOR, port->number), |
| 756 | NULL, "parport%d", port->number); | 756 | NULL, "parport%d", port->number); |
| 757 | } | 757 | } |
| 758 | 758 | ||
diff --git a/drivers/char/raw.c b/drivers/char/raw.c index f13e5de02207..30e4cbe16bb0 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c | |||
| @@ -128,7 +128,7 @@ raw_ioctl(struct inode *inode, struct file *filp, | |||
| 128 | static void bind_device(struct raw_config_request *rq) | 128 | static void bind_device(struct raw_config_request *rq) |
| 129 | { | 129 | { |
| 130 | class_device_destroy(raw_class, MKDEV(RAW_MAJOR, rq->raw_minor)); | 130 | class_device_destroy(raw_class, MKDEV(RAW_MAJOR, rq->raw_minor)); |
| 131 | class_device_create(raw_class, MKDEV(RAW_MAJOR, rq->raw_minor), | 131 | class_device_create(raw_class, NULL, MKDEV(RAW_MAJOR, rq->raw_minor), |
| 132 | NULL, "raw%d", rq->raw_minor); | 132 | NULL, "raw%d", rq->raw_minor); |
| 133 | } | 133 | } |
| 134 | 134 | ||
| @@ -307,7 +307,7 @@ static int __init raw_init(void) | |||
| 307 | unregister_chrdev_region(dev, MAX_RAW_MINORS); | 307 | unregister_chrdev_region(dev, MAX_RAW_MINORS); |
| 308 | goto error; | 308 | goto error; |
| 309 | } | 309 | } |
| 310 | class_device_create(raw_class, MKDEV(RAW_MAJOR, 0), NULL, "rawctl"); | 310 | class_device_create(raw_class, NULL, MKDEV(RAW_MAJOR, 0), NULL, "rawctl"); |
| 311 | 311 | ||
| 312 | devfs_mk_cdev(MKDEV(RAW_MAJOR, 0), | 312 | devfs_mk_cdev(MKDEV(RAW_MAJOR, 0), |
| 313 | S_IFCHR | S_IRUGO | S_IWUGO, | 313 | S_IFCHR | S_IRUGO | S_IWUGO, |
diff --git a/drivers/char/s3c2410-rtc.c b/drivers/char/s3c2410-rtc.c index e1a90d9a8756..887b8b2d7882 100644 --- a/drivers/char/s3c2410-rtc.c +++ b/drivers/char/s3c2410-rtc.c | |||
| @@ -519,30 +519,28 @@ static struct timespec s3c2410_rtc_delta; | |||
| 519 | 519 | ||
| 520 | static int ticnt_save; | 520 | static int ticnt_save; |
| 521 | 521 | ||
| 522 | static int s3c2410_rtc_suspend(struct device *dev, pm_message_t state, u32 level) | 522 | static int s3c2410_rtc_suspend(struct device *dev, pm_message_t state) |
| 523 | { | 523 | { |
| 524 | struct rtc_time tm; | 524 | struct rtc_time tm; |
| 525 | struct timespec time; | 525 | struct timespec time; |
| 526 | 526 | ||
| 527 | time.tv_nsec = 0; | 527 | time.tv_nsec = 0; |
| 528 | 528 | ||
| 529 | if (level == SUSPEND_POWER_DOWN) { | 529 | /* save TICNT for anyone using periodic interrupts */ |
| 530 | /* save TICNT for anyone using periodic interrupts */ | ||
| 531 | 530 | ||
| 532 | ticnt_save = readb(S3C2410_TICNT); | 531 | ticnt_save = readb(S3C2410_TICNT); |
| 533 | 532 | ||
| 534 | /* calculate time delta for suspend */ | 533 | /* calculate time delta for suspend */ |
| 535 | 534 | ||
| 536 | s3c2410_rtc_gettime(&tm); | 535 | s3c2410_rtc_gettime(&tm); |
| 537 | rtc_tm_to_time(&tm, &time.tv_sec); | 536 | rtc_tm_to_time(&tm, &time.tv_sec); |
| 538 | save_time_delta(&s3c2410_rtc_delta, &time); | 537 | save_time_delta(&s3c2410_rtc_delta, &time); |
| 539 | s3c2410_rtc_enable(dev, 0); | 538 | s3c2410_rtc_enable(dev, 0); |
| 540 | } | ||
| 541 | 539 | ||
| 542 | return 0; | 540 | return 0; |
| 543 | } | 541 | } |
| 544 | 542 | ||
| 545 | static int s3c2410_rtc_resume(struct device *dev, u32 level) | 543 | static int s3c2410_rtc_resume(struct device *dev) |
| 546 | { | 544 | { |
| 547 | struct rtc_time tm; | 545 | struct rtc_time tm; |
| 548 | struct timespec time; | 546 | struct timespec time; |
diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c index 261a41bf6d02..1758a83327e5 100644 --- a/drivers/char/snsc.c +++ b/drivers/char/snsc.c | |||
| @@ -437,7 +437,7 @@ scdrv_init(void) | |||
| 437 | continue; | 437 | continue; |
| 438 | } | 438 | } |
| 439 | 439 | ||
| 440 | class_device_create(snsc_class, dev, NULL, | 440 | class_device_create(snsc_class, NULL, dev, NULL, |
| 441 | "%s", devname); | 441 | "%s", devname); |
| 442 | 442 | ||
| 443 | ia64_sn_irtr_intr_enable(scd->scd_nasid, | 443 | ia64_sn_irtr_intr_enable(scd->scd_nasid, |
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c index 36ae9ad2598c..f86c15587238 100644 --- a/drivers/char/sonypi.c +++ b/drivers/char/sonypi.c | |||
| @@ -424,10 +424,6 @@ static struct sonypi_eventtypes { | |||
| 424 | 424 | ||
| 425 | #define SONYPI_BUF_SIZE 128 | 425 | #define SONYPI_BUF_SIZE 128 |
| 426 | 426 | ||
| 427 | /* The name of the devices for the input device drivers */ | ||
| 428 | #define SONYPI_JOG_INPUTNAME "Sony Vaio Jogdial" | ||
| 429 | #define SONYPI_KEY_INPUTNAME "Sony Vaio Keys" | ||
| 430 | |||
| 431 | /* Correspondance table between sonypi events and input layer events */ | 427 | /* Correspondance table between sonypi events and input layer events */ |
| 432 | static struct { | 428 | static struct { |
| 433 | int sonypiev; | 429 | int sonypiev; |
| @@ -490,8 +486,8 @@ static struct sonypi_device { | |||
| 490 | struct fasync_struct *fifo_async; | 486 | struct fasync_struct *fifo_async; |
| 491 | int open_count; | 487 | int open_count; |
| 492 | int model; | 488 | int model; |
| 493 | struct input_dev input_jog_dev; | 489 | struct input_dev *input_jog_dev; |
| 494 | struct input_dev input_key_dev; | 490 | struct input_dev *input_key_dev; |
| 495 | struct work_struct input_work; | 491 | struct work_struct input_work; |
| 496 | struct kfifo *input_fifo; | 492 | struct kfifo *input_fifo; |
| 497 | spinlock_t input_fifo_lock; | 493 | spinlock_t input_fifo_lock; |
| @@ -779,8 +775,8 @@ static void input_keyrelease(void *data) | |||
| 779 | 775 | ||
| 780 | static void sonypi_report_input_event(u8 event) | 776 | static void sonypi_report_input_event(u8 event) |
| 781 | { | 777 | { |
| 782 | struct input_dev *jog_dev = &sonypi_device.input_jog_dev; | 778 | struct input_dev *jog_dev = sonypi_device.input_jog_dev; |
| 783 | struct input_dev *key_dev = &sonypi_device.input_key_dev; | 779 | struct input_dev *key_dev = sonypi_device.input_key_dev; |
| 784 | struct sonypi_keypress kp = { NULL }; | 780 | struct sonypi_keypress kp = { NULL }; |
| 785 | int i; | 781 | int i; |
| 786 | 782 | ||
| @@ -1171,19 +1167,17 @@ static int sonypi_disable(void) | |||
| 1171 | #ifdef CONFIG_PM | 1167 | #ifdef CONFIG_PM |
| 1172 | static int old_camera_power; | 1168 | static int old_camera_power; |
| 1173 | 1169 | ||
| 1174 | static int sonypi_suspend(struct device *dev, pm_message_t state, u32 level) | 1170 | static int sonypi_suspend(struct device *dev, pm_message_t state) |
| 1175 | { | 1171 | { |
| 1176 | if (level == SUSPEND_DISABLE) { | 1172 | old_camera_power = sonypi_device.camera_power; |
| 1177 | old_camera_power = sonypi_device.camera_power; | 1173 | sonypi_disable(); |
| 1178 | sonypi_disable(); | 1174 | |
| 1179 | } | ||
| 1180 | return 0; | 1175 | return 0; |
| 1181 | } | 1176 | } |
| 1182 | 1177 | ||
| 1183 | static int sonypi_resume(struct device *dev, u32 level) | 1178 | static int sonypi_resume(struct device *dev) |
| 1184 | { | 1179 | { |
| 1185 | if (level == RESUME_ENABLE) | 1180 | sonypi_enable(old_camera_power); |
| 1186 | sonypi_enable(old_camera_power); | ||
| 1187 | return 0; | 1181 | return 0; |
| 1188 | } | 1182 | } |
| 1189 | #endif | 1183 | #endif |
| @@ -1203,6 +1197,47 @@ static struct device_driver sonypi_driver = { | |||
| 1203 | .shutdown = sonypi_shutdown, | 1197 | .shutdown = sonypi_shutdown, |
| 1204 | }; | 1198 | }; |
| 1205 | 1199 | ||
| 1200 | static int __devinit sonypi_create_input_devices(void) | ||
| 1201 | { | ||
| 1202 | struct input_dev *jog_dev; | ||
| 1203 | struct input_dev *key_dev; | ||
| 1204 | int i; | ||
| 1205 | |||
| 1206 | sonypi_device.input_jog_dev = jog_dev = input_allocate_device(); | ||
| 1207 | if (!jog_dev) | ||
| 1208 | return -ENOMEM; | ||
| 1209 | |||
| 1210 | jog_dev->name = "Sony Vaio Jogdial"; | ||
| 1211 | jog_dev->id.bustype = BUS_ISA; | ||
| 1212 | jog_dev->id.vendor = PCI_VENDOR_ID_SONY; | ||
| 1213 | |||
| 1214 | jog_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REL); | ||
| 1215 | jog_dev->keybit[LONG(BTN_MOUSE)] = BIT(BTN_MIDDLE); | ||
| 1216 | jog_dev->relbit[0] = BIT(REL_WHEEL); | ||
| 1217 | |||
| 1218 | sonypi_device.input_key_dev = key_dev = input_allocate_device(); | ||
| 1219 | if (!key_dev) { | ||
| 1220 | input_free_device(jog_dev); | ||
| 1221 | sonypi_device.input_jog_dev = NULL; | ||
| 1222 | return -ENOMEM; | ||
| 1223 | } | ||
| 1224 | |||
| 1225 | key_dev->name = "Sony Vaio Keys"; | ||
| 1226 | key_dev->id.bustype = BUS_ISA; | ||
| 1227 | key_dev->id.vendor = PCI_VENDOR_ID_SONY; | ||
| 1228 | |||
| 1229 | /* Initialize the Input Drivers: special keys */ | ||
| 1230 | key_dev->evbit[0] = BIT(EV_KEY); | ||
| 1231 | for (i = 0; sonypi_inputkeys[i].sonypiev; i++) | ||
| 1232 | if (sonypi_inputkeys[i].inputev) | ||
| 1233 | set_bit(sonypi_inputkeys[i].inputev, key_dev->keybit); | ||
| 1234 | |||
| 1235 | input_register_device(jog_dev); | ||
| 1236 | input_register_device(key_dev); | ||
| 1237 | |||
| 1238 | return 0; | ||
| 1239 | } | ||
| 1240 | |||
| 1206 | static int __devinit sonypi_probe(void) | 1241 | static int __devinit sonypi_probe(void) |
| 1207 | { | 1242 | { |
| 1208 | int i, ret; | 1243 | int i, ret; |
| @@ -1298,34 +1333,10 @@ static int __devinit sonypi_probe(void) | |||
| 1298 | } | 1333 | } |
| 1299 | 1334 | ||
| 1300 | if (useinput) { | 1335 | if (useinput) { |
| 1301 | /* Initialize the Input Drivers: jogdial */ | ||
| 1302 | int i; | ||
| 1303 | sonypi_device.input_jog_dev.evbit[0] = | ||
| 1304 | BIT(EV_KEY) | BIT(EV_REL); | ||
| 1305 | sonypi_device.input_jog_dev.keybit[LONG(BTN_MOUSE)] = | ||
| 1306 | BIT(BTN_MIDDLE); | ||
| 1307 | sonypi_device.input_jog_dev.relbit[0] = BIT(REL_WHEEL); | ||
| 1308 | sonypi_device.input_jog_dev.name = SONYPI_JOG_INPUTNAME; | ||
| 1309 | sonypi_device.input_jog_dev.id.bustype = BUS_ISA; | ||
| 1310 | sonypi_device.input_jog_dev.id.vendor = PCI_VENDOR_ID_SONY; | ||
| 1311 | |||
| 1312 | input_register_device(&sonypi_device.input_jog_dev); | ||
| 1313 | printk(KERN_INFO "%s input method installed.\n", | ||
| 1314 | sonypi_device.input_jog_dev.name); | ||
| 1315 | |||
| 1316 | /* Initialize the Input Drivers: special keys */ | ||
| 1317 | sonypi_device.input_key_dev.evbit[0] = BIT(EV_KEY); | ||
| 1318 | for (i = 0; sonypi_inputkeys[i].sonypiev; i++) | ||
| 1319 | if (sonypi_inputkeys[i].inputev) | ||
| 1320 | set_bit(sonypi_inputkeys[i].inputev, | ||
| 1321 | sonypi_device.input_key_dev.keybit); | ||
| 1322 | sonypi_device.input_key_dev.name = SONYPI_KEY_INPUTNAME; | ||
| 1323 | sonypi_device.input_key_dev.id.bustype = BUS_ISA; | ||
| 1324 | sonypi_device.input_key_dev.id.vendor = PCI_VENDOR_ID_SONY; | ||
| 1325 | 1336 | ||
| 1326 | input_register_device(&sonypi_device.input_key_dev); | 1337 | ret = sonypi_create_input_devices(); |
| 1327 | printk(KERN_INFO "%s input method installed.\n", | 1338 | if (ret) |
| 1328 | sonypi_device.input_key_dev.name); | 1339 | goto out_inputdevices; |
| 1329 | 1340 | ||
| 1330 | spin_lock_init(&sonypi_device.input_fifo_lock); | 1341 | spin_lock_init(&sonypi_device.input_fifo_lock); |
| 1331 | sonypi_device.input_fifo = | 1342 | sonypi_device.input_fifo = |
| @@ -1375,8 +1386,9 @@ static int __devinit sonypi_probe(void) | |||
| 1375 | out_platformdev: | 1386 | out_platformdev: |
| 1376 | kfifo_free(sonypi_device.input_fifo); | 1387 | kfifo_free(sonypi_device.input_fifo); |
| 1377 | out_infifo: | 1388 | out_infifo: |
| 1378 | input_unregister_device(&sonypi_device.input_key_dev); | 1389 | input_unregister_device(sonypi_device.input_key_dev); |
| 1379 | input_unregister_device(&sonypi_device.input_jog_dev); | 1390 | input_unregister_device(sonypi_device.input_jog_dev); |
| 1391 | out_inputdevices: | ||
| 1380 | free_irq(sonypi_device.irq, sonypi_irq); | 1392 | free_irq(sonypi_device.irq, sonypi_irq); |
| 1381 | out_reqirq: | 1393 | out_reqirq: |
| 1382 | release_region(sonypi_device.ioport1, sonypi_device.region_size); | 1394 | release_region(sonypi_device.ioport1, sonypi_device.region_size); |
| @@ -1402,8 +1414,8 @@ static void __devexit sonypi_remove(void) | |||
| 1402 | platform_device_unregister(sonypi_device.pdev); | 1414 | platform_device_unregister(sonypi_device.pdev); |
| 1403 | 1415 | ||
| 1404 | if (useinput) { | 1416 | if (useinput) { |
| 1405 | input_unregister_device(&sonypi_device.input_key_dev); | 1417 | input_unregister_device(sonypi_device.input_key_dev); |
| 1406 | input_unregister_device(&sonypi_device.input_jog_dev); | 1418 | input_unregister_device(sonypi_device.input_jog_dev); |
| 1407 | kfifo_free(sonypi_device.input_fifo); | 1419 | kfifo_free(sonypi_device.input_fifo); |
| 1408 | } | 1420 | } |
| 1409 | 1421 | ||
diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index 951545a6ef2d..1c686414e0a1 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c | |||
| @@ -3095,7 +3095,9 @@ static int __init stl_init(void) | |||
| 3095 | devfs_mk_cdev(MKDEV(STL_SIOMEMMAJOR, i), | 3095 | devfs_mk_cdev(MKDEV(STL_SIOMEMMAJOR, i), |
| 3096 | S_IFCHR|S_IRUSR|S_IWUSR, | 3096 | S_IFCHR|S_IRUSR|S_IWUSR, |
| 3097 | "staliomem/%d", i); | 3097 | "staliomem/%d", i); |
| 3098 | class_device_create(stallion_class, MKDEV(STL_SIOMEMMAJOR, i), NULL, "staliomem%d", i); | 3098 | class_device_create(stallion_class, NULL, |
| 3099 | MKDEV(STL_SIOMEMMAJOR, i), NULL, | ||
| 3100 | "staliomem%d", i); | ||
| 3099 | } | 3101 | } |
| 3100 | 3102 | ||
| 3101 | stl_serial->owner = THIS_MODULE; | 3103 | stl_serial->owner = THIS_MODULE; |
diff --git a/drivers/char/tipar.c b/drivers/char/tipar.c index ec78d2f161f7..41a94bc79f67 100644 --- a/drivers/char/tipar.c +++ b/drivers/char/tipar.c | |||
| @@ -436,7 +436,7 @@ tipar_register(int nr, struct parport *port) | |||
| 436 | goto out; | 436 | goto out; |
| 437 | } | 437 | } |
| 438 | 438 | ||
| 439 | class_device_create(tipar_class, MKDEV(TIPAR_MAJOR, | 439 | class_device_create(tipar_class, NULL, MKDEV(TIPAR_MAJOR, |
| 440 | TIPAR_MINOR + nr), NULL, "par%d", nr); | 440 | TIPAR_MINOR + nr), NULL, "par%d", nr); |
| 441 | /* Use devfs, tree: /dev/ticables/par/[0..2] */ | 441 | /* Use devfs, tree: /dev/ticables/par/[0..2] */ |
| 442 | err = devfs_mk_cdev(MKDEV(TIPAR_MAJOR, TIPAR_MINOR + nr), | 442 | err = devfs_mk_cdev(MKDEV(TIPAR_MAJOR, TIPAR_MINOR + nr), |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index e5953f3433f3..f5649a337743 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
| @@ -2728,7 +2728,7 @@ void tty_register_device(struct tty_driver *driver, unsigned index, | |||
| 2728 | pty_line_name(driver, index, name); | 2728 | pty_line_name(driver, index, name); |
| 2729 | else | 2729 | else |
| 2730 | tty_line_name(driver, index, name); | 2730 | tty_line_name(driver, index, name); |
| 2731 | class_device_create(tty_class, dev, device, name); | 2731 | class_device_create(tty_class, NULL, dev, device, "%s", name); |
| 2732 | } | 2732 | } |
| 2733 | 2733 | ||
| 2734 | /** | 2734 | /** |
| @@ -2983,14 +2983,14 @@ static int __init tty_init(void) | |||
| 2983 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0) | 2983 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0) |
| 2984 | panic("Couldn't register /dev/tty driver\n"); | 2984 | panic("Couldn't register /dev/tty driver\n"); |
| 2985 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 0), S_IFCHR|S_IRUGO|S_IWUGO, "tty"); | 2985 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 0), S_IFCHR|S_IRUGO|S_IWUGO, "tty"); |
| 2986 | class_device_create(tty_class, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty"); | 2986 | class_device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty"); |
| 2987 | 2987 | ||
| 2988 | cdev_init(&console_cdev, &console_fops); | 2988 | cdev_init(&console_cdev, &console_fops); |
| 2989 | if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) || | 2989 | if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) || |
| 2990 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0) | 2990 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0) |
| 2991 | panic("Couldn't register /dev/console driver\n"); | 2991 | panic("Couldn't register /dev/console driver\n"); |
| 2992 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 1), S_IFCHR|S_IRUSR|S_IWUSR, "console"); | 2992 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 1), S_IFCHR|S_IRUSR|S_IWUSR, "console"); |
| 2993 | class_device_create(tty_class, MKDEV(TTYAUX_MAJOR, 1), NULL, "console"); | 2993 | class_device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), NULL, "console"); |
| 2994 | 2994 | ||
| 2995 | #ifdef CONFIG_UNIX98_PTYS | 2995 | #ifdef CONFIG_UNIX98_PTYS |
| 2996 | cdev_init(&ptmx_cdev, &ptmx_fops); | 2996 | cdev_init(&ptmx_cdev, &ptmx_fops); |
| @@ -2998,7 +2998,7 @@ static int __init tty_init(void) | |||
| 2998 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0) | 2998 | register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0) |
| 2999 | panic("Couldn't register /dev/ptmx driver\n"); | 2999 | panic("Couldn't register /dev/ptmx driver\n"); |
| 3000 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 2), S_IFCHR|S_IRUGO|S_IWUGO, "ptmx"); | 3000 | devfs_mk_cdev(MKDEV(TTYAUX_MAJOR, 2), S_IFCHR|S_IRUGO|S_IWUGO, "ptmx"); |
| 3001 | class_device_create(tty_class, MKDEV(TTYAUX_MAJOR, 2), NULL, "ptmx"); | 3001 | class_device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 2), NULL, "ptmx"); |
| 3002 | #endif | 3002 | #endif |
| 3003 | 3003 | ||
| 3004 | #ifdef CONFIG_VT | 3004 | #ifdef CONFIG_VT |
| @@ -3007,7 +3007,7 @@ static int __init tty_init(void) | |||
| 3007 | register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0) | 3007 | register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0) |
| 3008 | panic("Couldn't register /dev/tty0 driver\n"); | 3008 | panic("Couldn't register /dev/tty0 driver\n"); |
| 3009 | devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vc/0"); | 3009 | devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vc/0"); |
| 3010 | class_device_create(tty_class, MKDEV(TTY_MAJOR, 0), NULL, "tty0"); | 3010 | class_device_create(tty_class, NULL, MKDEV(TTY_MAJOR, 0), NULL, "tty0"); |
| 3011 | 3011 | ||
| 3012 | vty_init(); | 3012 | vty_init(); |
| 3013 | #endif | 3013 | #endif |
diff --git a/drivers/char/vc_screen.c b/drivers/char/vc_screen.c index 79c2928a8817..f66c7ad6fd38 100644 --- a/drivers/char/vc_screen.c +++ b/drivers/char/vc_screen.c | |||
| @@ -484,8 +484,10 @@ void vcs_make_devfs(struct tty_struct *tty) | |||
| 484 | devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129), | 484 | devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129), |
| 485 | S_IFCHR|S_IRUSR|S_IWUSR, | 485 | S_IFCHR|S_IRUSR|S_IWUSR, |
| 486 | "vcc/a%u", tty->index + 1); | 486 | "vcc/a%u", tty->index + 1); |
| 487 | class_device_create(vc_class, MKDEV(VCS_MAJOR, tty->index + 1), NULL, "vcs%u", tty->index + 1); | 487 | class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 1), |
| 488 | class_device_create(vc_class, MKDEV(VCS_MAJOR, tty->index + 129), NULL, "vcsa%u", tty->index + 1); | 488 | NULL, "vcs%u", tty->index + 1); |
| 489 | class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 129), | ||
| 490 | NULL, "vcsa%u", tty->index + 1); | ||
| 489 | } | 491 | } |
| 490 | void vcs_remove_devfs(struct tty_struct *tty) | 492 | void vcs_remove_devfs(struct tty_struct *tty) |
| 491 | { | 493 | { |
| @@ -503,7 +505,7 @@ int __init vcs_init(void) | |||
| 503 | 505 | ||
| 504 | devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0"); | 506 | devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0"); |
| 505 | devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0"); | 507 | devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0"); |
| 506 | class_device_create(vc_class, MKDEV(VCS_MAJOR, 0), NULL, "vcs"); | 508 | class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 0), NULL, "vcs"); |
| 507 | class_device_create(vc_class, MKDEV(VCS_MAJOR, 128), NULL, "vcsa"); | 509 | class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 128), NULL, "vcsa"); |
| 508 | return 0; | 510 | return 0; |
| 509 | } | 511 | } |
diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index 0aff45fac2e6..a5e104f428f8 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c | |||
| @@ -956,9 +956,9 @@ static int viotape_probe(struct vio_dev *vdev, const struct vio_device_id *id) | |||
| 956 | state[i].cur_part = 0; | 956 | state[i].cur_part = 0; |
| 957 | for (j = 0; j < MAX_PARTITIONS; ++j) | 957 | for (j = 0; j < MAX_PARTITIONS; ++j) |
| 958 | state[i].part_stat_rwi[j] = VIOT_IDLE; | 958 | state[i].part_stat_rwi[j] = VIOT_IDLE; |
| 959 | class_device_create(tape_class, MKDEV(VIOTAPE_MAJOR, i), NULL, | 959 | class_device_create(tape_class, NULL, MKDEV(VIOTAPE_MAJOR, i), NULL, |
| 960 | "iseries!vt%d", i); | 960 | "iseries!vt%d", i); |
| 961 | class_device_create(tape_class, MKDEV(VIOTAPE_MAJOR, i | 0x80), | 961 | class_device_create(tape_class, NULL, MKDEV(VIOTAPE_MAJOR, i | 0x80), |
| 962 | NULL, "iseries!nvt%d", i); | 962 | NULL, "iseries!nvt%d", i); |
| 963 | devfs_mk_cdev(MKDEV(VIOTAPE_MAJOR, i), S_IFCHR | S_IRUSR | S_IWUSR, | 963 | devfs_mk_cdev(MKDEV(VIOTAPE_MAJOR, i), S_IFCHR | S_IRUSR | S_IWUSR, |
| 964 | "iseries/vt%d", i); | 964 | "iseries/vt%d", i); |
diff --git a/drivers/char/watchdog/s3c2410_wdt.c b/drivers/char/watchdog/s3c2410_wdt.c index 3625b2601b42..b732020acadb 100644 --- a/drivers/char/watchdog/s3c2410_wdt.c +++ b/drivers/char/watchdog/s3c2410_wdt.c | |||
| @@ -464,32 +464,28 @@ static void s3c2410wdt_shutdown(struct device *dev) | |||
| 464 | static unsigned long wtcon_save; | 464 | static unsigned long wtcon_save; |
| 465 | static unsigned long wtdat_save; | 465 | static unsigned long wtdat_save; |
| 466 | 466 | ||
| 467 | static int s3c2410wdt_suspend(struct device *dev, pm_message_t state, u32 level) | 467 | static int s3c2410wdt_suspend(struct device *dev, pm_message_t state) |
| 468 | { | 468 | { |
| 469 | if (level == SUSPEND_POWER_DOWN) { | 469 | /* Save watchdog state, and turn it off. */ |
| 470 | /* Save watchdog state, and turn it off. */ | 470 | wtcon_save = readl(wdt_base + S3C2410_WTCON); |
| 471 | wtcon_save = readl(wdt_base + S3C2410_WTCON); | 471 | wtdat_save = readl(wdt_base + S3C2410_WTDAT); |
| 472 | wtdat_save = readl(wdt_base + S3C2410_WTDAT); | ||
| 473 | 472 | ||
| 474 | /* Note that WTCNT doesn't need to be saved. */ | 473 | /* Note that WTCNT doesn't need to be saved. */ |
| 475 | s3c2410wdt_stop(); | 474 | s3c2410wdt_stop(); |
| 476 | } | ||
| 477 | 475 | ||
| 478 | return 0; | 476 | return 0; |
| 479 | } | 477 | } |
| 480 | 478 | ||
| 481 | static int s3c2410wdt_resume(struct device *dev, u32 level) | 479 | static int s3c2410wdt_resume(struct device *dev) |
| 482 | { | 480 | { |
| 483 | if (level == RESUME_POWER_ON) { | 481 | /* Restore watchdog state. */ |
| 484 | /* Restore watchdog state. */ | ||
| 485 | 482 | ||
| 486 | writel(wtdat_save, wdt_base + S3C2410_WTDAT); | 483 | writel(wtdat_save, wdt_base + S3C2410_WTDAT); |
| 487 | writel(wtdat_save, wdt_base + S3C2410_WTCNT); /* Reset count */ | 484 | writel(wtdat_save, wdt_base + S3C2410_WTCNT); /* Reset count */ |
| 488 | writel(wtcon_save, wdt_base + S3C2410_WTCON); | 485 | writel(wtcon_save, wdt_base + S3C2410_WTCON); |
| 489 | 486 | ||
| 490 | printk(KERN_INFO PFX "watchdog %sabled\n", | 487 | printk(KERN_INFO PFX "watchdog %sabled\n", |
| 491 | (wtcon_save & S3C2410_WTCON_ENABLE) ? "en" : "dis"); | 488 | (wtcon_save & S3C2410_WTCON_ENABLE) ? "en" : "dis"); |
| 492 | } | ||
| 493 | 489 | ||
| 494 | return 0; | 490 | return 0; |
| 495 | } | 491 | } |
