mirror of
https://github.com/torvalds/linux.git
synced 2024-11-07 12:41:55 +00:00
Merge branch 'origin'
This commit is contained in:
commit
638e174688
@ -14,8 +14,7 @@ CONFIG_GENERIC_IOMAP=y
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_CLEAN_COMPILE is not set
|
||||
CONFIG_BROKEN=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
|
||||
#
|
||||
@ -360,7 +359,6 @@ CONFIG_BLK_DEV_IDE_BAST=y
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
# CONFIG_IEEE1394 is not set
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
@ -781,7 +779,6 @@ CONFIG_SYSFS=y
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
|
@ -13,8 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_CLEAN_COMPILE is not set
|
||||
CONFIG_BROKEN=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
@ -308,9 +307,7 @@ CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
CONFIG_MTD_OBSOLETE_CHIPS=y
|
||||
# CONFIG_MTD_AMDSTD is not set
|
||||
CONFIG_MTD_SHARP=y
|
||||
# CONFIG_MTD_JEDEC is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
@ -396,7 +393,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
# CONFIG_IEEE1394 is not set
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
@ -741,7 +737,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
@ -13,8 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_CLEAN_COMPILE is not set
|
||||
CONFIG_BROKEN=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
@ -473,7 +472,6 @@ CONFIG_BLK_DEV_IDE_BAST=y
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
# CONFIG_IEEE1394 is not set
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
@ -896,7 +894,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
@ -7,337 +7,334 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This file is included twice in entry-common.S
|
||||
* This file is included thrice in entry-common.S
|
||||
*/
|
||||
#ifndef NR_syscalls
|
||||
#define NR_syscalls 328
|
||||
#else
|
||||
|
||||
100:
|
||||
/* 0 */ .long sys_restart_syscall
|
||||
.long sys_exit
|
||||
.long sys_fork_wrapper
|
||||
.long sys_read
|
||||
.long sys_write
|
||||
/* 5 */ .long sys_open
|
||||
.long sys_close
|
||||
.long sys_ni_syscall /* was sys_waitpid */
|
||||
.long sys_creat
|
||||
.long sys_link
|
||||
/* 10 */ .long sys_unlink
|
||||
.long sys_execve_wrapper
|
||||
.long sys_chdir
|
||||
.long OBSOLETE(sys_time) /* used by libc4 */
|
||||
.long sys_mknod
|
||||
/* 15 */ .long sys_chmod
|
||||
.long sys_lchown16
|
||||
.long sys_ni_syscall /* was sys_break */
|
||||
.long sys_ni_syscall /* was sys_stat */
|
||||
.long sys_lseek
|
||||
/* 20 */ .long sys_getpid
|
||||
.long sys_mount
|
||||
.long OBSOLETE(sys_oldumount) /* used by libc4 */
|
||||
.long sys_setuid16
|
||||
.long sys_getuid16
|
||||
/* 25 */ .long OBSOLETE(sys_stime)
|
||||
.long sys_ptrace
|
||||
.long OBSOLETE(sys_alarm) /* used by libc4 */
|
||||
.long sys_ni_syscall /* was sys_fstat */
|
||||
.long sys_pause
|
||||
/* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */
|
||||
.long sys_ni_syscall /* was sys_stty */
|
||||
.long sys_ni_syscall /* was sys_getty */
|
||||
.long sys_access
|
||||
.long sys_nice
|
||||
/* 35 */ .long sys_ni_syscall /* was sys_ftime */
|
||||
.long sys_sync
|
||||
.long sys_kill
|
||||
.long sys_rename
|
||||
.long sys_mkdir
|
||||
/* 40 */ .long sys_rmdir
|
||||
.long sys_dup
|
||||
.long sys_pipe
|
||||
.long sys_times
|
||||
.long sys_ni_syscall /* was sys_prof */
|
||||
/* 45 */ .long sys_brk
|
||||
.long sys_setgid16
|
||||
.long sys_getgid16
|
||||
.long sys_ni_syscall /* was sys_signal */
|
||||
.long sys_geteuid16
|
||||
/* 50 */ .long sys_getegid16
|
||||
.long sys_acct
|
||||
.long sys_umount
|
||||
.long sys_ni_syscall /* was sys_lock */
|
||||
.long sys_ioctl
|
||||
/* 55 */ .long sys_fcntl
|
||||
.long sys_ni_syscall /* was sys_mpx */
|
||||
.long sys_setpgid
|
||||
.long sys_ni_syscall /* was sys_ulimit */
|
||||
.long sys_ni_syscall /* was sys_olduname */
|
||||
/* 60 */ .long sys_umask
|
||||
.long sys_chroot
|
||||
.long sys_ustat
|
||||
.long sys_dup2
|
||||
.long sys_getppid
|
||||
/* 65 */ .long sys_getpgrp
|
||||
.long sys_setsid
|
||||
.long sys_sigaction
|
||||
.long sys_ni_syscall /* was sys_sgetmask */
|
||||
.long sys_ni_syscall /* was sys_ssetmask */
|
||||
/* 70 */ .long sys_setreuid16
|
||||
.long sys_setregid16
|
||||
.long sys_sigsuspend_wrapper
|
||||
.long sys_sigpending
|
||||
.long sys_sethostname
|
||||
/* 75 */ .long sys_setrlimit
|
||||
.long OBSOLETE(sys_old_getrlimit) /* used by libc4 */
|
||||
.long sys_getrusage
|
||||
.long sys_gettimeofday
|
||||
.long sys_settimeofday
|
||||
/* 80 */ .long sys_getgroups16
|
||||
.long sys_setgroups16
|
||||
.long OBSOLETE(old_select) /* used by libc4 */
|
||||
.long sys_symlink
|
||||
.long sys_ni_syscall /* was sys_lstat */
|
||||
/* 85 */ .long sys_readlink
|
||||
.long sys_uselib
|
||||
.long sys_swapon
|
||||
.long sys_reboot
|
||||
.long OBSOLETE(old_readdir) /* used by libc4 */
|
||||
/* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */
|
||||
.long sys_munmap
|
||||
.long sys_truncate
|
||||
.long sys_ftruncate
|
||||
.long sys_fchmod
|
||||
/* 95 */ .long sys_fchown16
|
||||
.long sys_getpriority
|
||||
.long sys_setpriority
|
||||
.long sys_ni_syscall /* was sys_profil */
|
||||
.long sys_statfs
|
||||
/* 100 */ .long sys_fstatfs
|
||||
.long sys_ni_syscall
|
||||
.long OBSOLETE(sys_socketcall)
|
||||
.long sys_syslog
|
||||
.long sys_setitimer
|
||||
/* 105 */ .long sys_getitimer
|
||||
.long sys_newstat
|
||||
.long sys_newlstat
|
||||
.long sys_newfstat
|
||||
.long sys_ni_syscall /* was sys_uname */
|
||||
/* 110 */ .long sys_ni_syscall /* was sys_iopl */
|
||||
.long sys_vhangup
|
||||
.long sys_ni_syscall
|
||||
.long OBSOLETE(sys_syscall) /* call a syscall */
|
||||
.long sys_wait4
|
||||
/* 115 */ .long sys_swapoff
|
||||
.long sys_sysinfo
|
||||
.long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc))
|
||||
.long sys_fsync
|
||||
.long sys_sigreturn_wrapper
|
||||
/* 120 */ .long sys_clone_wrapper
|
||||
.long sys_setdomainname
|
||||
.long sys_newuname
|
||||
.long sys_ni_syscall
|
||||
.long sys_adjtimex
|
||||
/* 125 */ .long sys_mprotect
|
||||
.long sys_sigprocmask
|
||||
.long sys_ni_syscall /* was sys_create_module */
|
||||
.long sys_init_module
|
||||
.long sys_delete_module
|
||||
/* 130 */ .long sys_ni_syscall /* was sys_get_kernel_syms */
|
||||
.long sys_quotactl
|
||||
.long sys_getpgid
|
||||
.long sys_fchdir
|
||||
.long sys_bdflush
|
||||
/* 135 */ .long sys_sysfs
|
||||
.long sys_personality
|
||||
.long sys_ni_syscall /* .long _sys_afs_syscall */
|
||||
.long sys_setfsuid16
|
||||
.long sys_setfsgid16
|
||||
/* 140 */ .long sys_llseek
|
||||
.long sys_getdents
|
||||
.long sys_select
|
||||
.long sys_flock
|
||||
.long sys_msync
|
||||
/* 145 */ .long sys_readv
|
||||
.long sys_writev
|
||||
.long sys_getsid
|
||||
.long sys_fdatasync
|
||||
.long sys_sysctl
|
||||
/* 150 */ .long sys_mlock
|
||||
.long sys_munlock
|
||||
.long sys_mlockall
|
||||
.long sys_munlockall
|
||||
.long sys_sched_setparam
|
||||
/* 155 */ .long sys_sched_getparam
|
||||
.long sys_sched_setscheduler
|
||||
.long sys_sched_getscheduler
|
||||
.long sys_sched_yield
|
||||
.long sys_sched_get_priority_max
|
||||
/* 160 */ .long sys_sched_get_priority_min
|
||||
.long sys_sched_rr_get_interval
|
||||
.long sys_nanosleep
|
||||
.long sys_arm_mremap
|
||||
.long sys_setresuid16
|
||||
/* 165 */ .long sys_getresuid16
|
||||
.long sys_ni_syscall
|
||||
.long sys_ni_syscall /* was sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
/* 170 */ .long sys_setresgid16
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
.long sys_rt_sigreturn_wrapper
|
||||
.long sys_rt_sigaction
|
||||
/* 175 */ .long sys_rt_sigprocmask
|
||||
.long sys_rt_sigpending
|
||||
.long sys_rt_sigtimedwait
|
||||
.long sys_rt_sigqueueinfo
|
||||
.long sys_rt_sigsuspend_wrapper
|
||||
/* 180 */ .long ABI(sys_pread64, sys_oabi_pread64)
|
||||
.long ABI(sys_pwrite64, sys_oabi_pwrite64)
|
||||
.long sys_chown16
|
||||
.long sys_getcwd
|
||||
.long sys_capget
|
||||
/* 185 */ .long sys_capset
|
||||
.long sys_sigaltstack_wrapper
|
||||
.long sys_sendfile
|
||||
.long sys_ni_syscall
|
||||
.long sys_ni_syscall
|
||||
/* 190 */ .long sys_vfork_wrapper
|
||||
.long sys_getrlimit
|
||||
.long sys_mmap2
|
||||
.long ABI(sys_truncate64, sys_oabi_truncate64)
|
||||
.long ABI(sys_ftruncate64, sys_oabi_ftruncate64)
|
||||
/* 195 */ .long ABI(sys_stat64, sys_oabi_stat64)
|
||||
.long ABI(sys_lstat64, sys_oabi_lstat64)
|
||||
.long ABI(sys_fstat64, sys_oabi_fstat64)
|
||||
.long sys_lchown
|
||||
.long sys_getuid
|
||||
/* 200 */ .long sys_getgid
|
||||
.long sys_geteuid
|
||||
.long sys_getegid
|
||||
.long sys_setreuid
|
||||
.long sys_setregid
|
||||
/* 205 */ .long sys_getgroups
|
||||
.long sys_setgroups
|
||||
.long sys_fchown
|
||||
.long sys_setresuid
|
||||
.long sys_getresuid
|
||||
/* 210 */ .long sys_setresgid
|
||||
.long sys_getresgid
|
||||
.long sys_chown
|
||||
.long sys_setuid
|
||||
.long sys_setgid
|
||||
/* 215 */ .long sys_setfsuid
|
||||
.long sys_setfsgid
|
||||
.long sys_getdents64
|
||||
.long sys_pivot_root
|
||||
.long sys_mincore
|
||||
/* 220 */ .long sys_madvise
|
||||
.long ABI(sys_fcntl64, sys_oabi_fcntl64)
|
||||
.long sys_ni_syscall /* TUX */
|
||||
.long sys_ni_syscall
|
||||
.long sys_gettid
|
||||
/* 225 */ .long ABI(sys_readahead, sys_oabi_readahead)
|
||||
.long sys_setxattr
|
||||
.long sys_lsetxattr
|
||||
.long sys_fsetxattr
|
||||
.long sys_getxattr
|
||||
/* 230 */ .long sys_lgetxattr
|
||||
.long sys_fgetxattr
|
||||
.long sys_listxattr
|
||||
.long sys_llistxattr
|
||||
.long sys_flistxattr
|
||||
/* 235 */ .long sys_removexattr
|
||||
.long sys_lremovexattr
|
||||
.long sys_fremovexattr
|
||||
.long sys_tkill
|
||||
.long sys_sendfile64
|
||||
/* 240 */ .long sys_futex
|
||||
.long sys_sched_setaffinity
|
||||
.long sys_sched_getaffinity
|
||||
.long sys_io_setup
|
||||
.long sys_io_destroy
|
||||
/* 245 */ .long sys_io_getevents
|
||||
.long sys_io_submit
|
||||
.long sys_io_cancel
|
||||
.long sys_exit_group
|
||||
.long sys_lookup_dcookie
|
||||
/* 250 */ .long sys_epoll_create
|
||||
.long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl)
|
||||
.long ABI(sys_epoll_wait, sys_oabi_epoll_wait)
|
||||
.long sys_remap_file_pages
|
||||
.long sys_ni_syscall /* sys_set_thread_area */
|
||||
/* 255 */ .long sys_ni_syscall /* sys_get_thread_area */
|
||||
.long sys_set_tid_address
|
||||
.long sys_timer_create
|
||||
.long sys_timer_settime
|
||||
.long sys_timer_gettime
|
||||
/* 260 */ .long sys_timer_getoverrun
|
||||
.long sys_timer_delete
|
||||
.long sys_clock_settime
|
||||
.long sys_clock_gettime
|
||||
.long sys_clock_getres
|
||||
/* 265 */ .long sys_clock_nanosleep
|
||||
.long sys_statfs64_wrapper
|
||||
.long sys_fstatfs64_wrapper
|
||||
.long sys_tgkill
|
||||
.long sys_utimes
|
||||
/* 270 */ .long sys_arm_fadvise64_64
|
||||
.long sys_pciconfig_iobase
|
||||
.long sys_pciconfig_read
|
||||
.long sys_pciconfig_write
|
||||
.long sys_mq_open
|
||||
/* 275 */ .long sys_mq_unlink
|
||||
.long sys_mq_timedsend
|
||||
.long sys_mq_timedreceive
|
||||
.long sys_mq_notify
|
||||
.long sys_mq_getsetattr
|
||||
/* 280 */ .long sys_waitid
|
||||
.long sys_socket
|
||||
.long sys_bind
|
||||
.long sys_connect
|
||||
.long sys_listen
|
||||
/* 285 */ .long sys_accept
|
||||
.long sys_getsockname
|
||||
.long sys_getpeername
|
||||
.long sys_socketpair
|
||||
.long sys_send
|
||||
/* 290 */ .long sys_sendto
|
||||
.long sys_recv
|
||||
.long sys_recvfrom
|
||||
.long sys_shutdown
|
||||
.long sys_setsockopt
|
||||
/* 295 */ .long sys_getsockopt
|
||||
.long sys_sendmsg
|
||||
.long sys_recvmsg
|
||||
.long ABI(sys_semop, sys_oabi_semop)
|
||||
.long sys_semget
|
||||
/* 300 */ .long sys_semctl
|
||||
.long sys_msgsnd
|
||||
.long sys_msgrcv
|
||||
.long sys_msgget
|
||||
.long sys_msgctl
|
||||
/* 305 */ .long sys_shmat
|
||||
.long sys_shmdt
|
||||
.long sys_shmget
|
||||
.long sys_shmctl
|
||||
.long sys_add_key
|
||||
/* 310 */ .long sys_request_key
|
||||
.long sys_keyctl
|
||||
.long ABI(sys_semtimedop, sys_oabi_semtimedop)
|
||||
/* vserver */ .long sys_ni_syscall
|
||||
.long sys_ioprio_set
|
||||
/* 315 */ .long sys_ioprio_get
|
||||
.long sys_inotify_init
|
||||
.long sys_inotify_add_watch
|
||||
.long sys_inotify_rm_watch
|
||||
.long sys_mbind
|
||||
/* 320 */ .long sys_get_mempolicy
|
||||
.long sys_set_mempolicy
|
||||
|
||||
.rept NR_syscalls - (. - 100b) / 4
|
||||
.long sys_ni_syscall
|
||||
.endr
|
||||
/* 0 */ CALL(sys_restart_syscall)
|
||||
CALL(sys_exit)
|
||||
CALL(sys_fork_wrapper)
|
||||
CALL(sys_read)
|
||||
CALL(sys_write)
|
||||
/* 5 */ CALL(sys_open)
|
||||
CALL(sys_close)
|
||||
CALL(sys_ni_syscall) /* was sys_waitpid */
|
||||
CALL(sys_creat)
|
||||
CALL(sys_link)
|
||||
/* 10 */ CALL(sys_unlink)
|
||||
CALL(sys_execve_wrapper)
|
||||
CALL(sys_chdir)
|
||||
CALL(OBSOLETE(sys_time)) /* used by libc4 */
|
||||
CALL(sys_mknod)
|
||||
/* 15 */ CALL(sys_chmod)
|
||||
CALL(sys_lchown16)
|
||||
CALL(sys_ni_syscall) /* was sys_break */
|
||||
CALL(sys_ni_syscall) /* was sys_stat */
|
||||
CALL(sys_lseek)
|
||||
/* 20 */ CALL(sys_getpid)
|
||||
CALL(sys_mount)
|
||||
CALL(OBSOLETE(sys_oldumount)) /* used by libc4 */
|
||||
CALL(sys_setuid16)
|
||||
CALL(sys_getuid16)
|
||||
/* 25 */ CALL(OBSOLETE(sys_stime))
|
||||
CALL(sys_ptrace)
|
||||
CALL(OBSOLETE(sys_alarm)) /* used by libc4 */
|
||||
CALL(sys_ni_syscall) /* was sys_fstat */
|
||||
CALL(sys_pause)
|
||||
/* 30 */ CALL(OBSOLETE(sys_utime)) /* used by libc4 */
|
||||
CALL(sys_ni_syscall) /* was sys_stty */
|
||||
CALL(sys_ni_syscall) /* was sys_getty */
|
||||
CALL(sys_access)
|
||||
CALL(sys_nice)
|
||||
/* 35 */ CALL(sys_ni_syscall) /* was sys_ftime */
|
||||
CALL(sys_sync)
|
||||
CALL(sys_kill)
|
||||
CALL(sys_rename)
|
||||
CALL(sys_mkdir)
|
||||
/* 40 */ CALL(sys_rmdir)
|
||||
CALL(sys_dup)
|
||||
CALL(sys_pipe)
|
||||
CALL(sys_times)
|
||||
CALL(sys_ni_syscall) /* was sys_prof */
|
||||
/* 45 */ CALL(sys_brk)
|
||||
CALL(sys_setgid16)
|
||||
CALL(sys_getgid16)
|
||||
CALL(sys_ni_syscall) /* was sys_signal */
|
||||
CALL(sys_geteuid16)
|
||||
/* 50 */ CALL(sys_getegid16)
|
||||
CALL(sys_acct)
|
||||
CALL(sys_umount)
|
||||
CALL(sys_ni_syscall) /* was sys_lock */
|
||||
CALL(sys_ioctl)
|
||||
/* 55 */ CALL(sys_fcntl)
|
||||
CALL(sys_ni_syscall) /* was sys_mpx */
|
||||
CALL(sys_setpgid)
|
||||
CALL(sys_ni_syscall) /* was sys_ulimit */
|
||||
CALL(sys_ni_syscall) /* was sys_olduname */
|
||||
/* 60 */ CALL(sys_umask)
|
||||
CALL(sys_chroot)
|
||||
CALL(sys_ustat)
|
||||
CALL(sys_dup2)
|
||||
CALL(sys_getppid)
|
||||
/* 65 */ CALL(sys_getpgrp)
|
||||
CALL(sys_setsid)
|
||||
CALL(sys_sigaction)
|
||||
CALL(sys_ni_syscall) /* was sys_sgetmask */
|
||||
CALL(sys_ni_syscall) /* was sys_ssetmask */
|
||||
/* 70 */ CALL(sys_setreuid16)
|
||||
CALL(sys_setregid16)
|
||||
CALL(sys_sigsuspend_wrapper)
|
||||
CALL(sys_sigpending)
|
||||
CALL(sys_sethostname)
|
||||
/* 75 */ CALL(sys_setrlimit)
|
||||
CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */
|
||||
CALL(sys_getrusage)
|
||||
CALL(sys_gettimeofday)
|
||||
CALL(sys_settimeofday)
|
||||
/* 80 */ CALL(sys_getgroups16)
|
||||
CALL(sys_setgroups16)
|
||||
CALL(OBSOLETE(old_select)) /* used by libc4 */
|
||||
CALL(sys_symlink)
|
||||
CALL(sys_ni_syscall) /* was sys_lstat */
|
||||
/* 85 */ CALL(sys_readlink)
|
||||
CALL(sys_uselib)
|
||||
CALL(sys_swapon)
|
||||
CALL(sys_reboot)
|
||||
CALL(OBSOLETE(old_readdir)) /* used by libc4 */
|
||||
/* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */
|
||||
CALL(sys_munmap)
|
||||
CALL(sys_truncate)
|
||||
CALL(sys_ftruncate)
|
||||
CALL(sys_fchmod)
|
||||
/* 95 */ CALL(sys_fchown16)
|
||||
CALL(sys_getpriority)
|
||||
CALL(sys_setpriority)
|
||||
CALL(sys_ni_syscall) /* was sys_profil */
|
||||
CALL(sys_statfs)
|
||||
/* 100 */ CALL(sys_fstatfs)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(OBSOLETE(sys_socketcall))
|
||||
CALL(sys_syslog)
|
||||
CALL(sys_setitimer)
|
||||
/* 105 */ CALL(sys_getitimer)
|
||||
CALL(sys_newstat)
|
||||
CALL(sys_newlstat)
|
||||
CALL(sys_newfstat)
|
||||
CALL(sys_ni_syscall) /* was sys_uname */
|
||||
/* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */
|
||||
CALL(sys_vhangup)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(OBSOLETE(sys_syscall)) /* call a syscall */
|
||||
CALL(sys_wait4)
|
||||
/* 115 */ CALL(sys_swapoff)
|
||||
CALL(sys_sysinfo)
|
||||
CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)))
|
||||
CALL(sys_fsync)
|
||||
CALL(sys_sigreturn_wrapper)
|
||||
/* 120 */ CALL(sys_clone_wrapper)
|
||||
CALL(sys_setdomainname)
|
||||
CALL(sys_newuname)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_adjtimex)
|
||||
/* 125 */ CALL(sys_mprotect)
|
||||
CALL(sys_sigprocmask)
|
||||
CALL(sys_ni_syscall) /* was sys_create_module */
|
||||
CALL(sys_init_module)
|
||||
CALL(sys_delete_module)
|
||||
/* 130 */ CALL(sys_ni_syscall) /* was sys_get_kernel_syms */
|
||||
CALL(sys_quotactl)
|
||||
CALL(sys_getpgid)
|
||||
CALL(sys_fchdir)
|
||||
CALL(sys_bdflush)
|
||||
/* 135 */ CALL(sys_sysfs)
|
||||
CALL(sys_personality)
|
||||
CALL(sys_ni_syscall) /* CALL(_sys_afs_syscall) */
|
||||
CALL(sys_setfsuid16)
|
||||
CALL(sys_setfsgid16)
|
||||
/* 140 */ CALL(sys_llseek)
|
||||
CALL(sys_getdents)
|
||||
CALL(sys_select)
|
||||
CALL(sys_flock)
|
||||
CALL(sys_msync)
|
||||
/* 145 */ CALL(sys_readv)
|
||||
CALL(sys_writev)
|
||||
CALL(sys_getsid)
|
||||
CALL(sys_fdatasync)
|
||||
CALL(sys_sysctl)
|
||||
/* 150 */ CALL(sys_mlock)
|
||||
CALL(sys_munlock)
|
||||
CALL(sys_mlockall)
|
||||
CALL(sys_munlockall)
|
||||
CALL(sys_sched_setparam)
|
||||
/* 155 */ CALL(sys_sched_getparam)
|
||||
CALL(sys_sched_setscheduler)
|
||||
CALL(sys_sched_getscheduler)
|
||||
CALL(sys_sched_yield)
|
||||
CALL(sys_sched_get_priority_max)
|
||||
/* 160 */ CALL(sys_sched_get_priority_min)
|
||||
CALL(sys_sched_rr_get_interval)
|
||||
CALL(sys_nanosleep)
|
||||
CALL(sys_arm_mremap)
|
||||
CALL(sys_setresuid16)
|
||||
/* 165 */ CALL(sys_getresuid16)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_ni_syscall) /* was sys_query_module */
|
||||
CALL(sys_poll)
|
||||
CALL(sys_nfsservctl)
|
||||
/* 170 */ CALL(sys_setresgid16)
|
||||
CALL(sys_getresgid16)
|
||||
CALL(sys_prctl)
|
||||
CALL(sys_rt_sigreturn_wrapper)
|
||||
CALL(sys_rt_sigaction)
|
||||
/* 175 */ CALL(sys_rt_sigprocmask)
|
||||
CALL(sys_rt_sigpending)
|
||||
CALL(sys_rt_sigtimedwait)
|
||||
CALL(sys_rt_sigqueueinfo)
|
||||
CALL(sys_rt_sigsuspend_wrapper)
|
||||
/* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64))
|
||||
CALL(ABI(sys_pwrite64, sys_oabi_pwrite64))
|
||||
CALL(sys_chown16)
|
||||
CALL(sys_getcwd)
|
||||
CALL(sys_capget)
|
||||
/* 185 */ CALL(sys_capset)
|
||||
CALL(sys_sigaltstack_wrapper)
|
||||
CALL(sys_sendfile)
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_ni_syscall)
|
||||
/* 190 */ CALL(sys_vfork_wrapper)
|
||||
CALL(sys_getrlimit)
|
||||
CALL(sys_mmap2)
|
||||
CALL(ABI(sys_truncate64, sys_oabi_truncate64))
|
||||
CALL(ABI(sys_ftruncate64, sys_oabi_ftruncate64))
|
||||
/* 195 */ CALL(ABI(sys_stat64, sys_oabi_stat64))
|
||||
CALL(ABI(sys_lstat64, sys_oabi_lstat64))
|
||||
CALL(ABI(sys_fstat64, sys_oabi_fstat64))
|
||||
CALL(sys_lchown)
|
||||
CALL(sys_getuid)
|
||||
/* 200 */ CALL(sys_getgid)
|
||||
CALL(sys_geteuid)
|
||||
CALL(sys_getegid)
|
||||
CALL(sys_setreuid)
|
||||
CALL(sys_setregid)
|
||||
/* 205 */ CALL(sys_getgroups)
|
||||
CALL(sys_setgroups)
|
||||
CALL(sys_fchown)
|
||||
CALL(sys_setresuid)
|
||||
CALL(sys_getresuid)
|
||||
/* 210 */ CALL(sys_setresgid)
|
||||
CALL(sys_getresgid)
|
||||
CALL(sys_chown)
|
||||
CALL(sys_setuid)
|
||||
CALL(sys_setgid)
|
||||
/* 215 */ CALL(sys_setfsuid)
|
||||
CALL(sys_setfsgid)
|
||||
CALL(sys_getdents64)
|
||||
CALL(sys_pivot_root)
|
||||
CALL(sys_mincore)
|
||||
/* 220 */ CALL(sys_madvise)
|
||||
CALL(ABI(sys_fcntl64, sys_oabi_fcntl64))
|
||||
CALL(sys_ni_syscall) /* TUX */
|
||||
CALL(sys_ni_syscall)
|
||||
CALL(sys_gettid)
|
||||
/* 225 */ CALL(ABI(sys_readahead, sys_oabi_readahead))
|
||||
CALL(sys_setxattr)
|
||||
CALL(sys_lsetxattr)
|
||||
CALL(sys_fsetxattr)
|
||||
CALL(sys_getxattr)
|
||||
/* 230 */ CALL(sys_lgetxattr)
|
||||
CALL(sys_fgetxattr)
|
||||
CALL(sys_listxattr)
|
||||
CALL(sys_llistxattr)
|
||||
CALL(sys_flistxattr)
|
||||
/* 235 */ CALL(sys_removexattr)
|
||||
CALL(sys_lremovexattr)
|
||||
CALL(sys_fremovexattr)
|
||||
CALL(sys_tkill)
|
||||
CALL(sys_sendfile64)
|
||||
/* 240 */ CALL(sys_futex)
|
||||
CALL(sys_sched_setaffinity)
|
||||
CALL(sys_sched_getaffinity)
|
||||
CALL(sys_io_setup)
|
||||
CALL(sys_io_destroy)
|
||||
/* 245 */ CALL(sys_io_getevents)
|
||||
CALL(sys_io_submit)
|
||||
CALL(sys_io_cancel)
|
||||
CALL(sys_exit_group)
|
||||
CALL(sys_lookup_dcookie)
|
||||
/* 250 */ CALL(sys_epoll_create)
|
||||
CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl))
|
||||
CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait))
|
||||
CALL(sys_remap_file_pages)
|
||||
CALL(sys_ni_syscall) /* sys_set_thread_area */
|
||||
/* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */
|
||||
CALL(sys_set_tid_address)
|
||||
CALL(sys_timer_create)
|
||||
CALL(sys_timer_settime)
|
||||
CALL(sys_timer_gettime)
|
||||
/* 260 */ CALL(sys_timer_getoverrun)
|
||||
CALL(sys_timer_delete)
|
||||
CALL(sys_clock_settime)
|
||||
CALL(sys_clock_gettime)
|
||||
CALL(sys_clock_getres)
|
||||
/* 265 */ CALL(sys_clock_nanosleep)
|
||||
CALL(sys_statfs64_wrapper)
|
||||
CALL(sys_fstatfs64_wrapper)
|
||||
CALL(sys_tgkill)
|
||||
CALL(sys_utimes)
|
||||
/* 270 */ CALL(sys_arm_fadvise64_64)
|
||||
CALL(sys_pciconfig_iobase)
|
||||
CALL(sys_pciconfig_read)
|
||||
CALL(sys_pciconfig_write)
|
||||
CALL(sys_mq_open)
|
||||
/* 275 */ CALL(sys_mq_unlink)
|
||||
CALL(sys_mq_timedsend)
|
||||
CALL(sys_mq_timedreceive)
|
||||
CALL(sys_mq_notify)
|
||||
CALL(sys_mq_getsetattr)
|
||||
/* 280 */ CALL(sys_waitid)
|
||||
CALL(sys_socket)
|
||||
CALL(sys_bind)
|
||||
CALL(sys_connect)
|
||||
CALL(sys_listen)
|
||||
/* 285 */ CALL(sys_accept)
|
||||
CALL(sys_getsockname)
|
||||
CALL(sys_getpeername)
|
||||
CALL(sys_socketpair)
|
||||
CALL(sys_send)
|
||||
/* 290 */ CALL(sys_sendto)
|
||||
CALL(sys_recv)
|
||||
CALL(sys_recvfrom)
|
||||
CALL(sys_shutdown)
|
||||
CALL(sys_setsockopt)
|
||||
/* 295 */ CALL(sys_getsockopt)
|
||||
CALL(sys_sendmsg)
|
||||
CALL(sys_recvmsg)
|
||||
CALL(ABI(sys_semop, sys_oabi_semop))
|
||||
CALL(sys_semget)
|
||||
/* 300 */ CALL(sys_semctl)
|
||||
CALL(sys_msgsnd)
|
||||
CALL(sys_msgrcv)
|
||||
CALL(sys_msgget)
|
||||
CALL(sys_msgctl)
|
||||
/* 305 */ CALL(sys_shmat)
|
||||
CALL(sys_shmdt)
|
||||
CALL(sys_shmget)
|
||||
CALL(sys_shmctl)
|
||||
CALL(sys_add_key)
|
||||
/* 310 */ CALL(sys_request_key)
|
||||
CALL(sys_keyctl)
|
||||
CALL(ABI(sys_semtimedop, sys_oabi_semtimedop))
|
||||
/* vserver */ CALL(sys_ni_syscall)
|
||||
CALL(sys_ioprio_set)
|
||||
/* 315 */ CALL(sys_ioprio_get)
|
||||
CALL(sys_inotify_init)
|
||||
CALL(sys_inotify_add_watch)
|
||||
CALL(sys_inotify_rm_watch)
|
||||
CALL(sys_mbind)
|
||||
/* 320 */ CALL(sys_get_mempolicy)
|
||||
CALL(sys_set_mempolicy)
|
||||
#ifndef syscalls_counted
|
||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||
#define syscalls_counted
|
||||
#endif
|
||||
.rept syscalls_padding
|
||||
CALL(sys_ni_syscall)
|
||||
.endr
|
||||
|
@ -87,7 +87,11 @@ ENTRY(ret_from_fork)
|
||||
b ret_slow_syscall
|
||||
|
||||
|
||||
.equ NR_syscalls,0
|
||||
#define CALL(x) .equ NR_syscalls,NR_syscalls+1
|
||||
#include "calls.S"
|
||||
#undef CALL
|
||||
#define CALL(x) .long x
|
||||
|
||||
/*=============================================================================
|
||||
* SWI handler
|
||||
|
@ -469,7 +469,9 @@ static void cp_clcd_enable(struct clcd_fb *fb)
|
||||
if (fb->fb.var.bits_per_pixel <= 8)
|
||||
val = CM_CTRL_LCDMUXSEL_VGA_8421BPP;
|
||||
else if (fb->fb.var.bits_per_pixel <= 16)
|
||||
val = CM_CTRL_LCDMUXSEL_VGA_16BPP;
|
||||
val = CM_CTRL_LCDMUXSEL_VGA_16BPP
|
||||
| CM_CTRL_LCDEN0 | CM_CTRL_LCDEN1
|
||||
| CM_CTRL_STATIC1 | CM_CTRL_STATIC2;
|
||||
else
|
||||
val = 0; /* no idea for this, don't trust the docs */
|
||||
|
||||
|
@ -17,11 +17,12 @@
|
||||
* 14-Jan-2005 BJD Added s3c24xx_init_clocks() call
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT
|
||||
* 14-Mar-2005 BJD Updated for __iomem
|
||||
* 15-Jan-2006 LCVR Updated S3C2410_PA_##x to new S3C24XX_PA_##x macro
|
||||
*/
|
||||
|
||||
/* todo - fix when rmk changes iodescs to use `void __iomem *` */
|
||||
|
||||
#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C2410_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
|
||||
#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
|
||||
|
||||
#ifndef MHZ
|
||||
#define MHZ (1000*1000)
|
||||
|
@ -10,6 +10,7 @@
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* Modifications:
|
||||
* 15-Jan-2006 LCVR Using S3C24XX_PA_##x macro for common S3C24XX devices
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ}
|
||||
* 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv
|
||||
* 29-Aug-2004 BJD Added timers 0 through 3
|
||||
@ -46,8 +47,8 @@ struct platform_device *s3c24xx_uart_devs[3];
|
||||
|
||||
static struct resource s3c_usb_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_USBHOST,
|
||||
.end = S3C2410_PA_USBHOST + S3C24XX_SZ_USBHOST - 1,
|
||||
.start = S3C24XX_PA_USBHOST,
|
||||
.end = S3C24XX_PA_USBHOST + S3C24XX_SZ_USBHOST - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -76,8 +77,8 @@ EXPORT_SYMBOL(s3c_device_usb);
|
||||
|
||||
static struct resource s3c_lcd_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_LCD,
|
||||
.end = S3C2410_PA_LCD + S3C24XX_SZ_LCD - 1,
|
||||
.start = S3C24XX_PA_LCD,
|
||||
.end = S3C24XX_PA_LCD + S3C24XX_SZ_LCD - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -139,8 +140,8 @@ EXPORT_SYMBOL(s3c_device_nand);
|
||||
|
||||
static struct resource s3c_usbgadget_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_USBDEV,
|
||||
.end = S3C2410_PA_USBDEV + S3C24XX_SZ_USBDEV - 1,
|
||||
.start = S3C24XX_PA_USBDEV,
|
||||
.end = S3C24XX_PA_USBDEV + S3C24XX_SZ_USBDEV - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -164,8 +165,8 @@ EXPORT_SYMBOL(s3c_device_usbgadget);
|
||||
|
||||
static struct resource s3c_wdt_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_WATCHDOG,
|
||||
.end = S3C2410_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1,
|
||||
.start = S3C24XX_PA_WATCHDOG,
|
||||
.end = S3C24XX_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -189,8 +190,8 @@ EXPORT_SYMBOL(s3c_device_wdt);
|
||||
|
||||
static struct resource s3c_i2c_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_IIC,
|
||||
.end = S3C2410_PA_IIC + S3C24XX_SZ_IIC - 1,
|
||||
.start = S3C24XX_PA_IIC,
|
||||
.end = S3C24XX_PA_IIC + S3C24XX_SZ_IIC - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -214,8 +215,8 @@ EXPORT_SYMBOL(s3c_device_i2c);
|
||||
|
||||
static struct resource s3c_iis_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_IIS,
|
||||
.end = S3C2410_PA_IIS + S3C24XX_SZ_IIS -1,
|
||||
.start = S3C24XX_PA_IIS,
|
||||
.end = S3C24XX_PA_IIS + S3C24XX_SZ_IIS -1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
@ -239,8 +240,8 @@ EXPORT_SYMBOL(s3c_device_iis);
|
||||
|
||||
static struct resource s3c_rtc_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_RTC,
|
||||
.end = S3C2410_PA_RTC + 0xff,
|
||||
.start = S3C24XX_PA_RTC,
|
||||
.end = S3C24XX_PA_RTC + 0xff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -268,8 +269,8 @@ EXPORT_SYMBOL(s3c_device_rtc);
|
||||
|
||||
static struct resource s3c_adc_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_ADC,
|
||||
.end = S3C2410_PA_ADC + S3C24XX_SZ_ADC - 1,
|
||||
.start = S3C24XX_PA_ADC,
|
||||
.end = S3C24XX_PA_ADC + S3C24XX_SZ_ADC - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -316,8 +317,8 @@ EXPORT_SYMBOL(s3c_device_sdi);
|
||||
|
||||
static struct resource s3c_spi0_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_SPI,
|
||||
.end = S3C2410_PA_SPI + 0x1f,
|
||||
.start = S3C24XX_PA_SPI,
|
||||
.end = S3C24XX_PA_SPI + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -341,8 +342,8 @@ EXPORT_SYMBOL(s3c_device_spi0);
|
||||
|
||||
static struct resource s3c_spi1_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_SPI + 0x20,
|
||||
.end = S3C2410_PA_SPI + 0x20 + 0x1f,
|
||||
.start = S3C24XX_PA_SPI + 0x20,
|
||||
.end = S3C24XX_PA_SPI + 0x20 + 0x1f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -366,8 +367,8 @@ EXPORT_SYMBOL(s3c_device_spi1);
|
||||
|
||||
static struct resource s3c_timer0_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_TIMER + 0x0C,
|
||||
.end = S3C2410_PA_TIMER + 0x0C + 0xB,
|
||||
.start = S3C24XX_PA_TIMER + 0x0C,
|
||||
.end = S3C24XX_PA_TIMER + 0x0C + 0xB,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -391,8 +392,8 @@ EXPORT_SYMBOL(s3c_device_timer0);
|
||||
|
||||
static struct resource s3c_timer1_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_TIMER + 0x18,
|
||||
.end = S3C2410_PA_TIMER + 0x23,
|
||||
.start = S3C24XX_PA_TIMER + 0x18,
|
||||
.end = S3C24XX_PA_TIMER + 0x23,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -416,8 +417,8 @@ EXPORT_SYMBOL(s3c_device_timer1);
|
||||
|
||||
static struct resource s3c_timer2_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_TIMER + 0x24,
|
||||
.end = S3C2410_PA_TIMER + 0x2F,
|
||||
.start = S3C24XX_PA_TIMER + 0x24,
|
||||
.end = S3C24XX_PA_TIMER + 0x2F,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
@ -441,8 +442,8 @@ EXPORT_SYMBOL(s3c_device_timer2);
|
||||
|
||||
static struct resource s3c_timer3_resource[] = {
|
||||
[0] = {
|
||||
.start = S3C2410_PA_TIMER + 0x30,
|
||||
.end = S3C2410_PA_TIMER + 0x3B,
|
||||
.start = S3C24XX_PA_TIMER + 0x30,
|
||||
.end = S3C24XX_PA_TIMER + 0x3B,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
|
@ -1152,7 +1152,7 @@ static int __init s3c2410_init_dma(void)
|
||||
|
||||
printk("S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics\n");
|
||||
|
||||
dma_base = ioremap(S3C2410_PA_DMA, 0x200);
|
||||
dma_base = ioremap(S3C24XX_PA_DMA, 0x200);
|
||||
if (dma_base == NULL) {
|
||||
printk(KERN_ERR "dma failed to remap register block\n");
|
||||
return -ENOMEM;
|
||||
|
@ -133,12 +133,12 @@ ENTRY(s3c2410_cpu_resume)
|
||||
@@ load UART to allow us to print the two characters for
|
||||
@@ resume debug
|
||||
|
||||
mov r2, #S3C2410_PA_UART & 0xff000000
|
||||
orr r2, r2, #S3C2410_PA_UART & 0xff000
|
||||
mov r2, #S3C24XX_PA_UART & 0xff000000
|
||||
orr r2, r2, #S3C24XX_PA_UART & 0xff000
|
||||
|
||||
#if 0
|
||||
/* SMDK2440 LED set */
|
||||
mov r14, #S3C2410_PA_GPIO
|
||||
mov r14, #S3C24XX_PA_GPIO
|
||||
ldr r12, [ r14, #0x54 ]
|
||||
bic r12, r12, #3<<4
|
||||
orr r12, r12, #1<<7
|
||||
|
@ -142,7 +142,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size,
|
||||
return NULL;
|
||||
addr = (unsigned long)area->addr;
|
||||
if (remap_area_pages(addr, pfn, size, flags)) {
|
||||
vfree(addr);
|
||||
vfree((void *)addr);
|
||||
return NULL;
|
||||
}
|
||||
return (void __iomem *) (offset + (char *)addr);
|
||||
|
@ -343,6 +343,12 @@ static struct mem_types mem_types[] __initdata = {
|
||||
PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE |
|
||||
PMD_SECT_TEX(1),
|
||||
.domain = DOMAIN_IO,
|
||||
},
|
||||
[MT_NONSHARED_DEVICE] = {
|
||||
.prot_l1 = PMD_TYPE_TABLE,
|
||||
.prot_sect = PMD_TYPE_SECT | PMD_SECT_NONSHARED_DEV |
|
||||
PMD_SECT_AP_WRITE,
|
||||
.domain = DOMAIN_IO,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -910,16 +910,18 @@ core99_gmac_phy_reset(struct device_node *node, long param, long value)
|
||||
macio->type != macio_intrepid)
|
||||
return -ENODEV;
|
||||
|
||||
printk(KERN_DEBUG "Hard reset of PHY chip ...\n");
|
||||
|
||||
LOCK(flags);
|
||||
MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, KEYLARGO_GPIO_OUTPUT_ENABLE);
|
||||
(void)MACIO_IN8(KL_GPIO_ETH_PHY_RESET);
|
||||
UNLOCK(flags);
|
||||
mdelay(10);
|
||||
msleep(10);
|
||||
LOCK(flags);
|
||||
MACIO_OUT8(KL_GPIO_ETH_PHY_RESET, /*KEYLARGO_GPIO_OUTPUT_ENABLE | */
|
||||
KEYLARGO_GPIO_OUTOUT_DATA);
|
||||
UNLOCK(flags);
|
||||
mdelay(10);
|
||||
msleep(10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MV643XX_ETH
|
||||
#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
|
||||
static struct resource mv64x60_eth_shared_resources[] = {
|
||||
[0] = {
|
||||
.name = "ethernet shared base",
|
||||
@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
|
||||
&mpsc0_device,
|
||||
&mpsc1_device,
|
||||
#endif
|
||||
#ifdef CONFIG_MV643XX_ETH
|
||||
#if defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
|
||||
&mv64x60_eth_shared_device,
|
||||
#endif
|
||||
#ifdef CONFIG_MV643XX_ETH_0
|
||||
|
@ -38,7 +38,7 @@
|
||||
|
||||
#define curptr g6
|
||||
|
||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
||||
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||
|
||||
/* These are just handy. */
|
||||
#define _SV save %sp, -STACKFRAME_SZ, %sp
|
||||
|
@ -323,11 +323,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
|
||||
case FMOVS:
|
||||
case FABSS:
|
||||
case FNEGS: TYPE(2,1,0,1,0,0,0); break;
|
||||
default:
|
||||
#ifdef DEBUG_MATHEMU
|
||||
printk("unknown FPop1: %03lx\n",(insn>>5)&0x1ff);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
} else if ((insn & 0xc1f80000) == 0x81a80000) /* FPOP2 */ {
|
||||
switch ((insn >> 5) & 0x1ff) {
|
||||
@ -337,11 +332,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
|
||||
case FCMPED: TYPE(3,0,0,2,1,2,1); break;
|
||||
case FCMPQ: TYPE(3,0,0,3,1,3,1); break;
|
||||
case FCMPEQ: TYPE(3,0,0,3,1,3,1); break;
|
||||
default:
|
||||
#ifdef DEBUG_MATHEMU
|
||||
printk("unknown FPop2: %03lx\n",(insn>>5)&0x1ff);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
#define curptr g6
|
||||
|
||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
||||
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||
|
||||
.text
|
||||
.align 32
|
||||
|
@ -84,7 +84,6 @@ SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
|
||||
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
|
||||
SIGN1(sys32_mlockall, sys_mlockall, %o0)
|
||||
SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0)
|
||||
SIGN1(sys32_clock_settime, compat_sys_clock_settime, %o1)
|
||||
SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1)
|
||||
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
|
||||
SIGN1(sys32_io_submit, compat_sys_io_submit, %o1)
|
||||
|
@ -71,7 +71,7 @@ sys_call_table32:
|
||||
/*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler
|
||||
.word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep
|
||||
/*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
|
||||
.word sys_ni_syscall, sys32_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
|
||||
.word sys_ni_syscall, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
|
||||
/*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
|
||||
.word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
|
||||
/*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
|
||||
|
@ -139,35 +139,16 @@ static int elevator_attach(request_queue_t *q, struct elevator_type *e,
|
||||
|
||||
static char chosen_elevator[16];
|
||||
|
||||
static void elevator_setup_default(void)
|
||||
static int __init elevator_setup(char *str)
|
||||
{
|
||||
struct elevator_type *e;
|
||||
|
||||
/*
|
||||
* If default has not been set, use the compiled-in selection.
|
||||
*/
|
||||
if (!chosen_elevator[0])
|
||||
strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED);
|
||||
|
||||
/*
|
||||
* Be backwards-compatible with previous kernels, so users
|
||||
* won't get the wrong elevator.
|
||||
*/
|
||||
if (!strcmp(chosen_elevator, "as"))
|
||||
if (!strcmp(str, "as"))
|
||||
strcpy(chosen_elevator, "anticipatory");
|
||||
|
||||
/*
|
||||
* If the given scheduler is not available, fall back to the default
|
||||
*/
|
||||
if ((e = elevator_find(chosen_elevator)))
|
||||
elevator_put(e);
|
||||
else
|
||||
strcpy(chosen_elevator, CONFIG_DEFAULT_IOSCHED);
|
||||
}
|
||||
|
||||
static int __init elevator_setup(char *str)
|
||||
{
|
||||
strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
|
||||
strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -184,15 +165,17 @@ int elevator_init(request_queue_t *q, char *name)
|
||||
q->end_sector = 0;
|
||||
q->boundary_rq = NULL;
|
||||
|
||||
elevator_setup_default();
|
||||
|
||||
if (!name)
|
||||
name = chosen_elevator;
|
||||
|
||||
e = elevator_get(name);
|
||||
if (!e)
|
||||
if (name && !(e = elevator_get(name)))
|
||||
return -EINVAL;
|
||||
|
||||
if (!e && *chosen_elevator && !(e = elevator_get(chosen_elevator)))
|
||||
printk("I/O scheduler %s not found\n", chosen_elevator);
|
||||
|
||||
if (!e && !(e = elevator_get(CONFIG_DEFAULT_IOSCHED))) {
|
||||
printk("Default I/O scheduler not found, using no-op\n");
|
||||
e = elevator_get("noop");
|
||||
}
|
||||
|
||||
eq = kmalloc(sizeof(struct elevator_queue), GFP_KERNEL);
|
||||
if (!eq) {
|
||||
elevator_put(e);
|
||||
@ -669,8 +652,10 @@ int elv_register(struct elevator_type *e)
|
||||
spin_unlock_irq(&elv_list_lock);
|
||||
|
||||
printk(KERN_INFO "io scheduler %s registered", e->elevator_name);
|
||||
if (!strcmp(e->elevator_name, chosen_elevator))
|
||||
printk(" (default)");
|
||||
if (!strcmp(e->elevator_name, chosen_elevator) ||
|
||||
(!*chosen_elevator &&
|
||||
!strcmp(e->elevator_name, CONFIG_DEFAULT_IOSCHED)))
|
||||
printk(" (default)");
|
||||
printk("\n");
|
||||
return 0;
|
||||
}
|
||||
|
@ -304,6 +304,7 @@ static inline void rq_init(request_queue_t *q, struct request *rq)
|
||||
* blk_queue_ordered - does this queue support ordered writes
|
||||
* @q: the request queue
|
||||
* @ordered: one of QUEUE_ORDERED_*
|
||||
* @prepare_flush_fn: rq setup helper for cache flush ordered writes
|
||||
*
|
||||
* Description:
|
||||
* For journalled file systems, doing ordered writes on a commit
|
||||
@ -332,6 +333,7 @@ int blk_queue_ordered(request_queue_t *q, unsigned ordered,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
q->ordered = ordered;
|
||||
q->next_ordered = ordered;
|
||||
q->prepare_flush_fn = prepare_flush_fn;
|
||||
|
||||
@ -662,7 +664,7 @@ EXPORT_SYMBOL(blk_queue_bounce_limit);
|
||||
* Enables a low level driver to set an upper limit on the size of
|
||||
* received requests.
|
||||
**/
|
||||
void blk_queue_max_sectors(request_queue_t *q, unsigned short max_sectors)
|
||||
void blk_queue_max_sectors(request_queue_t *q, unsigned int max_sectors)
|
||||
{
|
||||
if ((max_sectors << 9) < PAGE_CACHE_SIZE) {
|
||||
max_sectors = 1 << (PAGE_CACHE_SHIFT - 9);
|
||||
@ -2632,6 +2634,7 @@ EXPORT_SYMBOL(blk_put_request);
|
||||
/**
|
||||
* blk_end_sync_rq - executes a completion event on a request
|
||||
* @rq: request to complete
|
||||
* @error: end io status of the request
|
||||
*/
|
||||
void blk_end_sync_rq(struct request *rq, int error)
|
||||
{
|
||||
@ -3153,7 +3156,7 @@ static int __end_that_request_first(struct request *req, int uptodate,
|
||||
if (blk_fs_request(req) && req->rq_disk) {
|
||||
const int rw = rq_data_dir(req);
|
||||
|
||||
__disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9);
|
||||
disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9);
|
||||
}
|
||||
|
||||
total_bytes = bio_nbytes = 0;
|
||||
|
@ -29,9 +29,6 @@
|
||||
#ifdef CONFIG_ARCH_OMAP
|
||||
#include <asm/arch/gpio.h>
|
||||
#endif
|
||||
|
||||
#else
|
||||
#define set_irq_type(irq,type) do{}while(0)
|
||||
#endif
|
||||
|
||||
|
||||
@ -509,14 +506,14 @@ static int __devinit ads7846_probe(struct spi_device *spi)
|
||||
ts->msg.complete = ads7846_rx;
|
||||
ts->msg.context = ts;
|
||||
|
||||
if (request_irq(spi->irq, ads7846_irq, SA_SAMPLE_RANDOM,
|
||||
spi->dev.bus_id, ts)) {
|
||||
if (request_irq(spi->irq, ads7846_irq,
|
||||
SA_SAMPLE_RANDOM | SA_TRIGGER_FALLING,
|
||||
spi->dev.bus_id, ts)) {
|
||||
dev_dbg(&spi->dev, "irq %d busy?\n", spi->irq);
|
||||
input_unregister_device(&ts->input);
|
||||
kfree(ts);
|
||||
return -EBUSY;
|
||||
}
|
||||
set_irq_type(spi->irq, IRQT_FALLING);
|
||||
|
||||
dev_info(&spi->dev, "touchscreen, irq %d\n", spi->irq);
|
||||
|
||||
|
@ -50,7 +50,7 @@ void ibmasm_register_uart(struct service_processor *sp)
|
||||
memset(&uport, 0, sizeof(struct uart_port));
|
||||
uport.irq = sp->irq;
|
||||
uport.uartclk = 3686400;
|
||||
uport.flags = UPF_AUTOPROBE | UPF_SHARE_IRQ;
|
||||
uport.flags = UPF_SHARE_IRQ;
|
||||
uport.iotype = UPIO_MEM;
|
||||
uport.membase = iomem_base;
|
||||
|
||||
|
@ -2034,13 +2034,28 @@ config SKGE
|
||||
It does not support the link failover and network management
|
||||
features that "portable" vendor supplied sk98lin driver does.
|
||||
|
||||
This driver supports adapters based on the original Yukon chipset:
|
||||
Marvell 88E8001, Belkin F5D5005, CNet GigaCard, DLink DGE-530T,
|
||||
Linksys EG1032/EG1064, 3Com 3C940/3C940B, SysKonnect SK-9871/9872.
|
||||
|
||||
It does not support the newer Yukon2 chipset: a separate driver,
|
||||
sky2, is provided for Yukon2-based adapters.
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called skge. This is recommended.
|
||||
|
||||
config SKY2
|
||||
tristate "SysKonnect Yukon2 support (EXPERIMENTAL)"
|
||||
depends on PCI && EXPERIMENTAL
|
||||
select CRC32
|
||||
---help---
|
||||
This driver support the Marvell Yukon 2 Gigabit Ethernet adapter.
|
||||
This driver supports Gigabit Ethernet adapters based on the the
|
||||
Marvell Yukon 2 chipset:
|
||||
Marvell 88E8021/88E8022/88E8035/88E8036/88E8038/88E8050/88E8052/
|
||||
88E8053/88E8055/88E8061/88E8062, SysKonnect SK-9E21D/SK-9S21
|
||||
|
||||
This driver does not support the original Yukon chipset: a seperate
|
||||
driver, skge, is provided for Yukon-based adapters.
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called sky2. This is recommended.
|
||||
@ -2050,8 +2065,15 @@ config SK98LIN
|
||||
depends on PCI
|
||||
---help---
|
||||
Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
|
||||
compliant Gigabit Ethernet Adapter. The following adapters are supported
|
||||
by this driver:
|
||||
compliant Gigabit Ethernet Adapter.
|
||||
|
||||
This driver supports the original Yukon chipset. A cleaner driver is
|
||||
also available (skge) which seems to work better than this one.
|
||||
|
||||
This driver does not support the newer Yukon2 chipset. A seperate
|
||||
driver, sky2, is provided to support Yukon2-based adapters.
|
||||
|
||||
The following adapters are supported by this driver:
|
||||
- 3Com 3C940 Gigabit LOM Ethernet Adapter
|
||||
- 3Com 3C941 Gigabit LOM Ethernet Adapter
|
||||
- Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
|
||||
|
@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net_device *dev)
|
||||
|
||||
mac1 = 0;
|
||||
for(i = 0; i < 4; i++) {
|
||||
int tmp;
|
||||
|
||||
mac1 = mac1 << 8;
|
||||
tmp = read_eeprom_byte(dev, 0x8c+i);
|
||||
if (tmp < 0) {
|
||||
@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net_device *dev)
|
||||
}
|
||||
mac2 = 0;
|
||||
for(i = 4; i < 8; i++) {
|
||||
int tmp;
|
||||
|
||||
mac2 = mac2 << 8;
|
||||
tmp = read_eeprom_byte(dev, 0x8c+i);
|
||||
if (tmp < 0) {
|
||||
|
@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
|
||||
b44_init_rings(bp);
|
||||
b44_init_hw(bp);
|
||||
|
||||
netif_carrier_off(dev);
|
||||
b44_check_phy(bp);
|
||||
|
||||
err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev);
|
||||
@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev)
|
||||
#endif
|
||||
b44_halt(bp);
|
||||
b44_free_rings(bp);
|
||||
netif_carrier_off(bp->dev);
|
||||
netif_carrier_off(dev);
|
||||
|
||||
spin_unlock_irq(&bp->lock);
|
||||
|
||||
@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
|
||||
dev->irq = pdev->irq;
|
||||
SET_ETHTOOL_OPS(dev, &b44_ethtool_ops);
|
||||
|
||||
netif_carrier_off(dev);
|
||||
|
||||
err = b44_get_invariants(bp);
|
||||
if (err) {
|
||||
printk(KERN_ERR PFX "Problem fetching invariants of chip, "
|
||||
|
@ -576,7 +576,7 @@ static int bond_update_speed_duplex(struct slave *slave)
|
||||
slave->duplex = DUPLEX_FULL;
|
||||
|
||||
if (slave_dev->ethtool_ops) {
|
||||
u32 res;
|
||||
int res;
|
||||
|
||||
if (!slave_dev->ethtool_ops->get_settings) {
|
||||
return -1;
|
||||
|
@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
|
||||
netif_rx(skb);
|
||||
#endif
|
||||
}
|
||||
dev->last_rx = jiffies;
|
||||
}
|
||||
|
||||
return received_packets;
|
||||
@ -461,7 +462,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
|
||||
*/
|
||||
|
||||
static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id,
|
||||
struct pt_regs *regs)
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)dev_id;
|
||||
struct mv643xx_private *mp = netdev_priv(dev);
|
||||
@ -1047,16 +1048,15 @@ static int mv643xx_poll(struct net_device *dev, int *budget)
|
||||
|
||||
static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
|
||||
{
|
||||
unsigned int frag;
|
||||
skb_frag_t *fragp;
|
||||
unsigned int frag;
|
||||
skb_frag_t *fragp;
|
||||
|
||||
for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) {
|
||||
fragp = &skb_shinfo(skb)->frags[frag];
|
||||
if (fragp->size <= 8 && fragp->page_offset & 0x7)
|
||||
return 1;
|
||||
|
||||
}
|
||||
return 0;
|
||||
for (frag = 0; frag < skb_shinfo(skb)->nr_frags; frag++) {
|
||||
fragp = &skb_shinfo(skb)->frags[frag];
|
||||
if (fragp->size <= 8 && fragp->page_offset & 0x7)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -2137,26 +2137,26 @@ static void eth_port_set_multicast_list(struct net_device *dev)
|
||||
*/
|
||||
if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI)) {
|
||||
for (table_index = 0; table_index <= 0xFC; table_index += 4) {
|
||||
/* Set all entries in DA filter special multicast
|
||||
* table (Ex_dFSMT)
|
||||
* Set for ETH_Q0 for now
|
||||
* Bits
|
||||
* 0 Accept=1, Drop=0
|
||||
* 3-1 Queue ETH_Q0=0
|
||||
* 7-4 Reserved = 0;
|
||||
*/
|
||||
mv_write(MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101);
|
||||
/* Set all entries in DA filter special multicast
|
||||
* table (Ex_dFSMT)
|
||||
* Set for ETH_Q0 for now
|
||||
* Bits
|
||||
* 0 Accept=1, Drop=0
|
||||
* 3-1 Queue ETH_Q0=0
|
||||
* 7-4 Reserved = 0;
|
||||
*/
|
||||
mv_write(MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101);
|
||||
|
||||
/* Set all entries in DA filter other multicast
|
||||
* table (Ex_dFOMT)
|
||||
* Set for ETH_Q0 for now
|
||||
* Bits
|
||||
* 0 Accept=1, Drop=0
|
||||
* 3-1 Queue ETH_Q0=0
|
||||
* 7-4 Reserved = 0;
|
||||
*/
|
||||
mv_write(MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101);
|
||||
}
|
||||
/* Set all entries in DA filter other multicast
|
||||
* table (Ex_dFOMT)
|
||||
* Set for ETH_Q0 for now
|
||||
* Bits
|
||||
* 0 Accept=1, Drop=0
|
||||
* 3-1 Queue ETH_Q0=0
|
||||
* 7-4 Reserved = 0;
|
||||
*/
|
||||
mv_write(MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE(eth_port_num) + table_index, 0x01010101);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2617,7 +2617,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
|
||||
struct eth_tx_desc *current_descriptor;
|
||||
struct eth_tx_desc *first_descriptor;
|
||||
u32 command;
|
||||
unsigned long flags;
|
||||
|
||||
/* Do not process Tx ring in case of Tx ring resource error */
|
||||
if (mp->tx_resource_err)
|
||||
@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
|
||||
return ETH_ERROR;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&mp->lock, flags);
|
||||
|
||||
mp->tx_ring_skbs++;
|
||||
BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size);
|
||||
|
||||
@ -2685,15 +2682,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
|
||||
mp->tx_resource_err = 1;
|
||||
mp->tx_curr_desc_q = tx_first_desc;
|
||||
|
||||
spin_unlock_irqrestore(&mp->lock, flags);
|
||||
|
||||
return ETH_QUEUE_LAST_RESOURCE;
|
||||
}
|
||||
|
||||
mp->tx_curr_desc_q = tx_next_desc;
|
||||
|
||||
spin_unlock_irqrestore(&mp->lock, flags);
|
||||
|
||||
return ETH_OK;
|
||||
}
|
||||
#else
|
||||
@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
|
||||
int tx_desc_used;
|
||||
struct eth_tx_desc *current_descriptor;
|
||||
unsigned int command_status;
|
||||
unsigned long flags;
|
||||
|
||||
/* Do not process Tx ring in case of Tx ring resource error */
|
||||
if (mp->tx_resource_err)
|
||||
return ETH_QUEUE_FULL;
|
||||
|
||||
spin_lock_irqsave(&mp->lock, flags);
|
||||
|
||||
mp->tx_ring_skbs++;
|
||||
BUG_ON(mp->tx_ring_skbs > mp->tx_ring_size);
|
||||
|
||||
@ -2742,12 +2732,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
|
||||
/* Check for ring index overlap in the Tx desc ring */
|
||||
if (tx_desc_curr == tx_desc_used) {
|
||||
mp->tx_resource_err = 1;
|
||||
|
||||
spin_unlock_irqrestore(&mp->lock, flags);
|
||||
return ETH_QUEUE_LAST_RESOURCE;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&mp->lock, flags);
|
||||
return ETH_OK;
|
||||
}
|
||||
#endif
|
||||
@ -2898,8 +2885,10 @@ static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
|
||||
p_pkt_info->return_info = mp->rx_skb[rx_curr_desc];
|
||||
p_pkt_info->l4i_chk = p_rx_desc->buf_size;
|
||||
|
||||
/* Clean the return info field to indicate that the packet has been */
|
||||
/* moved to the upper layers */
|
||||
/*
|
||||
* Clean the return info field to indicate that the
|
||||
* packet has been moved to the upper layers
|
||||
*/
|
||||
mp->rx_skb[rx_curr_desc] = NULL;
|
||||
|
||||
/* Update current index in data structure */
|
||||
@ -2980,7 +2969,7 @@ struct mv643xx_stats {
|
||||
};
|
||||
|
||||
#define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)->m), \
|
||||
offsetof(struct mv643xx_private, m)
|
||||
offsetof(struct mv643xx_private, m)
|
||||
|
||||
static const struct mv643xx_stats mv643xx_gstrings_stats[] = {
|
||||
{ "rx_packets", MV643XX_STAT(stats.rx_packets) },
|
||||
@ -3131,9 +3120,8 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
mv643xx_get_drvinfo(struct net_device *netdev,
|
||||
struct ethtool_drvinfo *drvinfo)
|
||||
static void mv643xx_get_drvinfo(struct net_device *netdev,
|
||||
struct ethtool_drvinfo *drvinfo)
|
||||
{
|
||||
strncpy(drvinfo->driver, mv643xx_driver_name, 32);
|
||||
strncpy(drvinfo->version, mv643xx_driver_version, 32);
|
||||
@ -3142,39 +3130,37 @@ mv643xx_get_drvinfo(struct net_device *netdev,
|
||||
drvinfo->n_stats = MV643XX_STATS_LEN;
|
||||
}
|
||||
|
||||
static int
|
||||
mv643xx_get_stats_count(struct net_device *netdev)
|
||||
static int mv643xx_get_stats_count(struct net_device *netdev)
|
||||
{
|
||||
return MV643XX_STATS_LEN;
|
||||
}
|
||||
|
||||
static void
|
||||
mv643xx_get_ethtool_stats(struct net_device *netdev,
|
||||
struct ethtool_stats *stats, uint64_t *data)
|
||||
static void mv643xx_get_ethtool_stats(struct net_device *netdev,
|
||||
struct ethtool_stats *stats, uint64_t *data)
|
||||
{
|
||||
struct mv643xx_private *mp = netdev->priv;
|
||||
int i;
|
||||
|
||||
eth_update_mib_counters(mp);
|
||||
|
||||
for(i = 0; i < MV643XX_STATS_LEN; i++) {
|
||||
for (i = 0; i < MV643XX_STATS_LEN; i++) {
|
||||
char *p = (char *)mp+mv643xx_gstrings_stats[i].stat_offset;
|
||||
data[i] = (mv643xx_gstrings_stats[i].sizeof_stat ==
|
||||
data[i] = (mv643xx_gstrings_stats[i].sizeof_stat ==
|
||||
sizeof(uint64_t)) ? *(uint64_t *)p : *(uint32_t *)p;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
mv643xx_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)
|
||||
static void mv643xx_get_strings(struct net_device *netdev, uint32_t stringset,
|
||||
uint8_t *data)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch(stringset) {
|
||||
case ETH_SS_STATS:
|
||||
for (i=0; i < MV643XX_STATS_LEN; i++) {
|
||||
memcpy(data + i * ETH_GSTRING_LEN,
|
||||
mv643xx_gstrings_stats[i].stat_string,
|
||||
ETH_GSTRING_LEN);
|
||||
memcpy(data + i * ETH_GSTRING_LEN,
|
||||
mv643xx_gstrings_stats[i].stat_string,
|
||||
ETH_GSTRING_LEN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -3586,7 +3586,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
txdp->Buffer_Pointer = (u64) pci_map_page
|
||||
(sp->pdev, frag->page, frag->page_offset,
|
||||
frag->size, PCI_DMA_TODEVICE);
|
||||
txdp->Control_1 |= TXD_BUFFER0_SIZE(frag->size);
|
||||
txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size);
|
||||
if (skb_shinfo(skb)->ufo_size)
|
||||
txdp->Control_1 |= TXD_UFO_EN;
|
||||
}
|
||||
|
@ -1653,36 +1653,40 @@ static void gem_init_rings(struct gem *gp)
|
||||
/* Init PHY interface and start link poll state machine */
|
||||
static void gem_init_phy(struct gem *gp)
|
||||
{
|
||||
u32 mifcfg;
|
||||
u32 mif_cfg;
|
||||
|
||||
/* Revert MIF CFG setting done on stop_phy */
|
||||
mifcfg = readl(gp->regs + MIF_CFG);
|
||||
mifcfg &= ~MIF_CFG_BBMODE;
|
||||
writel(mifcfg, gp->regs + MIF_CFG);
|
||||
mif_cfg = readl(gp->regs + MIF_CFG);
|
||||
mif_cfg &= ~(MIF_CFG_PSELECT|MIF_CFG_POLL|MIF_CFG_BBMODE|MIF_CFG_MDI1);
|
||||
mif_cfg |= MIF_CFG_MDI0;
|
||||
writel(mif_cfg, gp->regs + MIF_CFG);
|
||||
writel(PCS_DMODE_MGM, gp->regs + PCS_DMODE);
|
||||
writel(MAC_XIFCFG_OE, gp->regs + MAC_XIFCFG);
|
||||
|
||||
if (gp->pdev->vendor == PCI_VENDOR_ID_APPLE) {
|
||||
int i;
|
||||
u16 ctrl;
|
||||
|
||||
/* Those delay sucks, the HW seem to love them though, I'll
|
||||
* serisouly consider breaking some locks here to be able
|
||||
* to schedule instead
|
||||
*/
|
||||
for (i = 0; i < 3; i++) {
|
||||
#ifdef CONFIG_PPC_PMAC
|
||||
pmac_call_feature(PMAC_FTR_GMAC_PHY_RESET, gp->of_node, 0, 0);
|
||||
msleep(20);
|
||||
pmac_call_feature(PMAC_FTR_GMAC_PHY_RESET, gp->of_node, 0, 0);
|
||||
#endif
|
||||
/* Some PHYs used by apple have problem getting back to us,
|
||||
* we do an additional reset here
|
||||
*/
|
||||
phy_write(gp, MII_BMCR, BMCR_RESET);
|
||||
msleep(20);
|
||||
if (phy_read(gp, MII_BMCR) != 0xffff)
|
||||
|
||||
/* Some PHYs used by apple have problem getting back
|
||||
* to us, we do an additional reset here
|
||||
*/
|
||||
phy_write(gp, MII_BMCR, BMCR_RESET);
|
||||
for (i = 0; i < 50; i++) {
|
||||
if ((phy_read(gp, MII_BMCR) & BMCR_RESET) == 0)
|
||||
break;
|
||||
if (i == 2)
|
||||
printk(KERN_WARNING "%s: GMAC PHY not responding !\n",
|
||||
gp->dev->name);
|
||||
msleep(10);
|
||||
}
|
||||
if (i == 50)
|
||||
printk(KERN_WARNING "%s: GMAC PHY not responding !\n",
|
||||
gp->dev->name);
|
||||
/* Make sure isolate is off */
|
||||
ctrl = phy_read(gp, MII_BMCR);
|
||||
if (ctrl & BMCR_ISOLATE)
|
||||
phy_write(gp, MII_BMCR, ctrl & ~BMCR_ISOLATE);
|
||||
}
|
||||
|
||||
if (gp->pdev->vendor == PCI_VENDOR_ID_SUN &&
|
||||
@ -2119,7 +2123,7 @@ static void gem_reinit_chip(struct gem *gp)
|
||||
/* Must be invoked with no lock held. */
|
||||
static void gem_stop_phy(struct gem *gp, int wol)
|
||||
{
|
||||
u32 mifcfg;
|
||||
u32 mif_cfg;
|
||||
unsigned long flags;
|
||||
|
||||
/* Let the chip settle down a bit, it seems that helps
|
||||
@ -2130,9 +2134,9 @@ static void gem_stop_phy(struct gem *gp, int wol)
|
||||
/* Make sure we aren't polling PHY status change. We
|
||||
* don't currently use that feature though
|
||||
*/
|
||||
mifcfg = readl(gp->regs + MIF_CFG);
|
||||
mifcfg &= ~MIF_CFG_POLL;
|
||||
writel(mifcfg, gp->regs + MIF_CFG);
|
||||
mif_cfg = readl(gp->regs + MIF_CFG);
|
||||
mif_cfg &= ~MIF_CFG_POLL;
|
||||
writel(mif_cfg, gp->regs + MIF_CFG);
|
||||
|
||||
if (wol && gp->has_wol) {
|
||||
unsigned char *e = &gp->dev->dev_addr[0];
|
||||
@ -2182,7 +2186,8 @@ static void gem_stop_phy(struct gem *gp, int wol)
|
||||
/* According to Apple, we must set the MDIO pins to this begnign
|
||||
* state or we may 1) eat more current, 2) damage some PHYs
|
||||
*/
|
||||
writel(mifcfg | MIF_CFG_BBMODE, gp->regs + MIF_CFG);
|
||||
mif_cfg = 0;
|
||||
writel(mif_cfg | MIF_CFG_BBMODE, gp->regs + MIF_CFG);
|
||||
writel(0, gp->regs + MIF_BBCLK);
|
||||
writel(0, gp->regs + MIF_BBDATA);
|
||||
writel(0, gp->regs + MIF_BBOENAB);
|
||||
|
@ -75,7 +75,7 @@ config HOSTAP_PCI
|
||||
|
||||
config HOSTAP_CS
|
||||
tristate "Host AP driver for Prism2/2.5/3 PC Cards"
|
||||
depends on PCMCIA!=n && HOSTAP
|
||||
depends on PCMCIA && HOSTAP
|
||||
---help---
|
||||
Host AP driver's version for Prism2/2.5/3 PC Cards.
|
||||
|
||||
|
@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
|
||||
#define SEARCH_SNAPSHOT 1
|
||||
|
||||
#define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff))
|
||||
static void ipw2100_snapshot_free(struct ipw2100_priv *priv)
|
||||
{
|
||||
int i;
|
||||
if (!priv->snapshot[0])
|
||||
return;
|
||||
for (i = 0; i < 0x30; i++)
|
||||
kfree(priv->snapshot[i]);
|
||||
priv->snapshot[0] = NULL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IPW2100_DEBUG_C3
|
||||
static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
|
||||
{
|
||||
int i;
|
||||
@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void ipw2100_snapshot_free(struct ipw2100_priv *priv)
|
||||
{
|
||||
int i;
|
||||
if (!priv->snapshot[0])
|
||||
return;
|
||||
for (i = 0; i < 0x30; i++)
|
||||
kfree(priv->snapshot[i]);
|
||||
priv->snapshot[0] = NULL;
|
||||
}
|
||||
|
||||
static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
|
||||
size_t len, int mode)
|
||||
{
|
||||
@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*
|
||||
@ -7112,11 +7114,17 @@ static int ipw2100_wx_set_txpow(struct net_device *dev,
|
||||
{
|
||||
struct ipw2100_priv *priv = ieee80211_priv(dev);
|
||||
int err = 0, value;
|
||||
|
||||
if (ipw_radio_kill_sw(priv, wrqu->txpower.disabled))
|
||||
return -EINPROGRESS;
|
||||
|
||||
if (priv->ieee->iw_mode != IW_MODE_ADHOC)
|
||||
return 0;
|
||||
|
||||
if ((wrqu->txpower.flags & IW_TXPOW_TYPE) != IW_TXPOW_DBM)
|
||||
return -EINVAL;
|
||||
|
||||
if (wrqu->txpower.disabled == 1 || wrqu->txpower.fixed == 0)
|
||||
if (wrqu->txpower.fixed == 0)
|
||||
value = IPW_TX_POWER_DEFAULT;
|
||||
else {
|
||||
if (wrqu->txpower.value < IPW_TX_POWER_MIN_DBM ||
|
||||
@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev,
|
||||
|
||||
struct ipw2100_priv *priv = ieee80211_priv(dev);
|
||||
|
||||
if (priv->ieee->iw_mode != IW_MODE_ADHOC) {
|
||||
wrqu->power.disabled = 1;
|
||||
return 0;
|
||||
}
|
||||
wrqu->txpower.disabled = (priv->status & STATUS_RF_KILL_MASK) ? 1 : 0;
|
||||
|
||||
if (priv->tx_power == IPW_TX_POWER_DEFAULT) {
|
||||
wrqu->power.fixed = 0;
|
||||
wrqu->power.value = IPW_TX_POWER_MAX_DBM;
|
||||
wrqu->power.disabled = 1;
|
||||
wrqu->txpower.fixed = 0;
|
||||
wrqu->txpower.value = IPW_TX_POWER_MAX_DBM;
|
||||
} else {
|
||||
wrqu->power.disabled = 0;
|
||||
wrqu->power.fixed = 1;
|
||||
wrqu->power.value = priv->tx_power;
|
||||
wrqu->txpower.fixed = 1;
|
||||
wrqu->txpower.value = priv->tx_power;
|
||||
}
|
||||
|
||||
wrqu->power.flags = IW_TXPOW_DBM;
|
||||
wrqu->txpower.flags = IW_TXPOW_DBM;
|
||||
|
||||
IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->power.value);
|
||||
IPW_DEBUG_WX("GET TX Power -> %d \n", wrqu->txpower.value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init)
|
||||
else
|
||||
IPW_DEBUG_INFO("Auto adhoc creation disabled.\n");
|
||||
|
||||
priv->config &= ~CFG_STATIC_ESSID;
|
||||
priv->essid_len = 0;
|
||||
memset(priv->essid, 0, IW_ESSID_MAX_SIZE);
|
||||
|
||||
if (disable) {
|
||||
priv->status |= STATUS_RF_KILL_SW;
|
||||
IPW_DEBUG_INFO("Radio disabled.\n");
|
||||
@ -11035,7 +11039,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
net_dev->set_multicast_list = ipw_net_set_multicast_list;
|
||||
net_dev->set_mac_address = ipw_net_set_mac_address;
|
||||
priv->wireless_data.spy_data = &priv->ieee->spy_data;
|
||||
priv->wireless_data.ieee80211 = priv->ieee;
|
||||
net_dev->wireless_data = &priv->wireless_data;
|
||||
net_dev->wireless_handlers = &ipw_wx_handler_def;
|
||||
net_dev->ethtool_ops = &ipw_ethtool_ops;
|
||||
@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev)
|
||||
/* Free MAC hash list for ADHOC */
|
||||
for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) {
|
||||
list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) {
|
||||
kfree(list_entry(p, struct ipw_ibss_seq, list));
|
||||
list_del(p);
|
||||
kfree(list_entry(p, struct ipw_ibss_seq, list));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,13 +261,13 @@ orinoco_cs_config(dev_link_t *link)
|
||||
/* Note that the CIS values need to be rescaled */
|
||||
if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
|
||||
if (conf.Vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) {
|
||||
DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)\n", conf.Vcc, cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
|
||||
DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, cfg CIS = %d)\n", conf.Vcc, cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
|
||||
if (!ignore_cis_vcc)
|
||||
goto next_entry;
|
||||
}
|
||||
} else if (dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) {
|
||||
if (conf.Vcc != dflt.vcc.param[CISTPL_POWER_VNOM] / 10000) {
|
||||
DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)\n", conf.Vcc, dflt.vcc.param[CISTPL_POWER_VNOM] / 10000);
|
||||
DEBUG(2, "orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, dflt CIS = %d)\n", conf.Vcc, dflt.vcc.param[CISTPL_POWER_VNOM] / 10000);
|
||||
if(!ignore_cis_vcc)
|
||||
goto next_entry;
|
||||
}
|
||||
|
@ -416,7 +416,9 @@ static void attach_msi_entry(struct msi_desc *entry, int vector)
|
||||
|
||||
static void irq_handler_init(int cap_id, int pos, int mask)
|
||||
{
|
||||
spin_lock(&irq_desc[pos].lock);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&irq_desc[pos].lock, flags);
|
||||
if (cap_id == PCI_CAP_ID_MSIX)
|
||||
irq_desc[pos].handler = &msix_irq_type;
|
||||
else {
|
||||
@ -425,7 +427,7 @@ static void irq_handler_init(int cap_id, int pos, int mask)
|
||||
else
|
||||
irq_desc[pos].handler = &msi_irq_w_maskbit_type;
|
||||
}
|
||||
spin_unlock(&irq_desc[pos].lock);
|
||||
spin_unlock_irqrestore(&irq_desc[pos].lock, flags);
|
||||
}
|
||||
|
||||
static void enable_msi_mode(struct pci_dev *dev, int pos, int type)
|
||||
|
@ -1700,6 +1700,31 @@ static unsigned int ata_msense_rw_recovery(u8 **ptr_io, const u8 *last)
|
||||
return sizeof(def_rw_recovery_mpage);
|
||||
}
|
||||
|
||||
/*
|
||||
* We can turn this into a real blacklist if it's needed, for now just
|
||||
* blacklist any Maxtor BANC1G10 revision firmware
|
||||
*/
|
||||
static int ata_dev_supports_fua(u16 *id)
|
||||
{
|
||||
unsigned char model[41], fw[9];
|
||||
|
||||
if (!ata_id_has_fua(id))
|
||||
return 0;
|
||||
|
||||
model[40] = '\0';
|
||||
fw[8] = '\0';
|
||||
|
||||
ata_dev_id_string(id, model, ATA_ID_PROD_OFS, sizeof(model) - 1);
|
||||
ata_dev_id_string(id, fw, ATA_ID_FW_REV_OFS, sizeof(fw) - 1);
|
||||
|
||||
if (strncmp(model, "Maxtor", 6))
|
||||
return 1;
|
||||
if (strncmp(fw, "BANC1G10", 8))
|
||||
return 1;
|
||||
|
||||
return 0; /* blacklisted */
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_scsiop_mode_sense - Simulate MODE SENSE 6, 10 commands
|
||||
* @args: device IDENTIFY data / SCSI command of interest.
|
||||
@ -1797,7 +1822,7 @@ unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf,
|
||||
return 0;
|
||||
|
||||
dpofua = 0;
|
||||
if (ata_id_has_fua(args->id) && dev->flags & ATA_DFLAG_LBA48 &&
|
||||
if (ata_dev_supports_fua(args->id) && dev->flags & ATA_DFLAG_LBA48 &&
|
||||
(!(dev->flags & ATA_DFLAG_PIO) || dev->multi_count))
|
||||
dpofua = 1 << 4;
|
||||
|
||||
|
@ -366,7 +366,7 @@ static struct uart_port serial21285_port = {
|
||||
.irq = NO_IRQ,
|
||||
.fifosize = 16,
|
||||
.ops = &serial21285_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
};
|
||||
|
||||
static void serial21285_setup_ports(void)
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/sysrq.h>
|
||||
#include <linux/mca.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/tty.h>
|
||||
@ -2026,12 +2025,6 @@ static void serial8250_config_port(struct uart_port *port, int flags)
|
||||
int probeflags = PROBE_ANY;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Don't probe for MCA ports on non-MCA machines.
|
||||
*/
|
||||
if (up->port.flags & UPF_BOOT_ONLYMCA && !MCA_bus)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Find the region that we can probe for. This in turn
|
||||
* tells us whether we can probe for the type of port.
|
||||
@ -2164,7 +2157,7 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
|
||||
/*
|
||||
* Wait for transmitter & holding register to empty
|
||||
*/
|
||||
static inline void wait_for_xmitr(struct uart_8250_port *up)
|
||||
static inline void wait_for_xmitr(struct uart_8250_port *up, int bits)
|
||||
{
|
||||
unsigned int status, tmout = 10000;
|
||||
|
||||
@ -2178,7 +2171,7 @@ static inline void wait_for_xmitr(struct uart_8250_port *up)
|
||||
if (--tmout == 0)
|
||||
break;
|
||||
udelay(1);
|
||||
} while ((status & BOTH_EMPTY) != BOTH_EMPTY);
|
||||
} while ((status & bits) != bits);
|
||||
|
||||
/* Wait up to 1s for flow control if necessary */
|
||||
if (up->port.flags & UPF_CONS_FLOW) {
|
||||
@ -2218,7 +2211,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
|
||||
* Now, do each character
|
||||
*/
|
||||
for (i = 0; i < count; i++, s++) {
|
||||
wait_for_xmitr(up);
|
||||
wait_for_xmitr(up, UART_LSR_THRE);
|
||||
|
||||
/*
|
||||
* Send the character out.
|
||||
@ -2226,7 +2219,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
|
||||
*/
|
||||
serial_out(up, UART_TX, *s);
|
||||
if (*s == 10) {
|
||||
wait_for_xmitr(up);
|
||||
wait_for_xmitr(up, UART_LSR_THRE);
|
||||
serial_out(up, UART_TX, 13);
|
||||
}
|
||||
}
|
||||
@ -2235,8 +2228,8 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
|
||||
* Finally, wait for transmitter to become empty
|
||||
* and restore the IER
|
||||
*/
|
||||
wait_for_xmitr(up);
|
||||
serial_out(up, UART_IER, ier);
|
||||
wait_for_xmitr(up, BOTH_EMPTY);
|
||||
serial_out(up, UART_IER, ier | UART_IER_THRI);
|
||||
}
|
||||
|
||||
static int serial8250_console_setup(struct console *co, char *options)
|
||||
|
@ -23,7 +23,7 @@ config SERIAL_8250
|
||||
work.)
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called serial.
|
||||
module will be called 8250.
|
||||
[WARNING: Do not compile this driver as a module if you are using
|
||||
non-standard serial ports, since the configuration information will
|
||||
be lost when the driver is unloaded. This limitation may be lifted
|
||||
|
@ -566,7 +566,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
|
||||
.uartclk = 14745600,
|
||||
.fifosize = 16,
|
||||
.ops = &amba_pl010_pops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.dtr_mask = 1 << 5,
|
||||
@ -581,7 +581,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
|
||||
.uartclk = 14745600,
|
||||
.fifosize = 16,
|
||||
.ops = &amba_pl010_pops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.dtr_mask = 1 << 7,
|
||||
|
@ -410,7 +410,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
|
||||
.fifosize = 16,
|
||||
.ops = &clps711x_pops,
|
||||
.line = 0,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
},
|
||||
{
|
||||
.iobase = SYSCON2,
|
||||
@ -419,7 +419,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
|
||||
.fifosize = 16,
|
||||
.ops = &clps711x_pops,
|
||||
.line = 1,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -402,10 +402,10 @@ static int imx_startup(struct uart_port *port)
|
||||
DRIVER_NAME, sport);
|
||||
if (retval) goto error_out2;
|
||||
|
||||
retval = request_irq(sport->rtsirq, imx_rtsint, 0,
|
||||
retval = request_irq(sport->rtsirq, imx_rtsint,
|
||||
SA_TRIGGER_FALLING | SA_TRIGGER_RISING,
|
||||
DRIVER_NAME, sport);
|
||||
if (retval) goto error_out3;
|
||||
set_irq_type(sport->rtsirq, IRQT_BOTHEDGE);
|
||||
|
||||
/*
|
||||
* Finally, clear and enable interrupts
|
||||
@ -674,7 +674,7 @@ static struct imx_port imx_ports[] = {
|
||||
.irq = UART1_MINT_RX,
|
||||
.uartclk = 16000000,
|
||||
.fifosize = 8,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.ops = &imx_pops,
|
||||
.line = 0,
|
||||
},
|
||||
@ -690,7 +690,7 @@ static struct imx_port imx_ports[] = {
|
||||
.irq = UART2_MINT_RX,
|
||||
.uartclk = 16000000,
|
||||
.fifosize = 8,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.ops = &imx_pops,
|
||||
.line = 1,
|
||||
},
|
||||
|
@ -1060,7 +1060,7 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
|
||||
dbg("resource %p (%lx..%lx)\n", res, res->start, res->end);
|
||||
|
||||
port->mapbase = res->start;
|
||||
port->membase = S3C24XX_VA_UART + (res->start - S3C2410_PA_UART);
|
||||
port->membase = S3C24XX_VA_UART + (res->start - S3C24XX_PA_UART);
|
||||
port->irq = platform_get_irq(platdev, 0);
|
||||
|
||||
ourport->clk = clk_get(&platdev->dev, "uart");
|
||||
|
@ -665,21 +665,21 @@ void __init sa1100_register_uart(int idx, int port)
|
||||
sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0;
|
||||
sa1100_ports[idx].port.mapbase = _Ser1UTCR0;
|
||||
sa1100_ports[idx].port.irq = IRQ_Ser1UART;
|
||||
sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF;
|
||||
sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0;
|
||||
sa1100_ports[idx].port.mapbase = _Ser2UTCR0;
|
||||
sa1100_ports[idx].port.irq = IRQ_Ser2ICP;
|
||||
sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF;
|
||||
sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0;
|
||||
sa1100_ports[idx].port.mapbase = _Ser3UTCR0;
|
||||
sa1100_ports[idx].port.irq = IRQ_Ser3UART;
|
||||
sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF;
|
||||
sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -332,7 +332,7 @@ uart_get_baud_rate(struct uart_port *port, struct termios *termios,
|
||||
struct termios *old, unsigned int min, unsigned int max)
|
||||
{
|
||||
unsigned int try, baud, altbaud = 38400;
|
||||
unsigned int flags = port->flags & UPF_SPD_MASK;
|
||||
upf_t flags = port->flags & UPF_SPD_MASK;
|
||||
|
||||
if (flags == UPF_SPD_HI)
|
||||
altbaud = 57600;
|
||||
@ -615,8 +615,9 @@ static int uart_set_info(struct uart_state *state,
|
||||
struct serial_struct new_serial;
|
||||
struct uart_port *port = state->port;
|
||||
unsigned long new_port;
|
||||
unsigned int change_irq, change_port, old_flags, closing_wait;
|
||||
unsigned int change_irq, change_port, closing_wait;
|
||||
unsigned int old_custom_divisor, close_delay;
|
||||
upf_t old_flags, new_flags;
|
||||
int retval = 0;
|
||||
|
||||
if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
|
||||
@ -655,6 +656,7 @@ static int uart_set_info(struct uart_state *state,
|
||||
new_serial.type != port->type;
|
||||
|
||||
old_flags = port->flags;
|
||||
new_flags = new_serial.flags;
|
||||
old_custom_divisor = port->custom_divisor;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN)) {
|
||||
@ -664,10 +666,10 @@ static int uart_set_info(struct uart_state *state,
|
||||
(close_delay != state->close_delay) ||
|
||||
(closing_wait != state->closing_wait) ||
|
||||
(new_serial.xmit_fifo_size != port->fifosize) ||
|
||||
(((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0))
|
||||
(((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0))
|
||||
goto exit;
|
||||
port->flags = ((port->flags & ~UPF_USR_MASK) |
|
||||
(new_serial.flags & UPF_USR_MASK));
|
||||
(new_flags & UPF_USR_MASK));
|
||||
port->custom_divisor = new_serial.custom_divisor;
|
||||
goto check_and_exit;
|
||||
}
|
||||
@ -764,7 +766,7 @@ static int uart_set_info(struct uart_state *state,
|
||||
port->irq = new_serial.irq;
|
||||
port->uartclk = new_serial.baud_base * 16;
|
||||
port->flags = (port->flags & ~UPF_CHANGE_MASK) |
|
||||
(new_serial.flags & UPF_CHANGE_MASK);
|
||||
(new_flags & UPF_CHANGE_MASK);
|
||||
port->custom_divisor = new_serial.custom_divisor;
|
||||
state->close_delay = close_delay;
|
||||
state->closing_wait = closing_wait;
|
||||
@ -1870,7 +1872,7 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port)
|
||||
mutex_lock(&state->mutex);
|
||||
|
||||
if (state->info && state->info->flags & UIF_INITIALIZED) {
|
||||
struct uart_ops *ops = port->ops;
|
||||
const struct uart_ops *ops = port->ops;
|
||||
|
||||
spin_lock_irq(&port->lock);
|
||||
ops->stop_tx(port);
|
||||
@ -1932,7 +1934,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port)
|
||||
}
|
||||
|
||||
if (state->info && state->info->flags & UIF_INITIALIZED) {
|
||||
struct uart_ops *ops = port->ops;
|
||||
const struct uart_ops *ops = port->ops;
|
||||
int ret;
|
||||
|
||||
ops->set_mctrl(port, 0);
|
||||
|
@ -506,7 +506,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
|
||||
.uartclk = 14745600/2,
|
||||
.fifosize = 16,
|
||||
.ops = &lh7a40x_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
},
|
||||
@ -519,7 +519,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
|
||||
.uartclk = 14745600/2,
|
||||
.fifosize = 16,
|
||||
.ops = &lh7a40x_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
},
|
||||
@ -532,7 +532,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
|
||||
.uartclk = 14745600/2,
|
||||
.fifosize = 16,
|
||||
.ops = &lh7a40x_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 2,
|
||||
},
|
||||
},
|
||||
|
@ -1113,10 +1113,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xfffffe80,
|
||||
.mapbase = 0xfffffe80,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 25,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1128,10 +1128,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)SCIF0,
|
||||
.mapbase = SCIF0,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 55,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1142,10 +1142,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)SCIF2,
|
||||
.mapbase = SCIF2,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 59,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1157,10 +1157,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xfffffe80,
|
||||
.mapbase = 0xfffffe80,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 25,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1171,10 +1171,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xa4000150,
|
||||
.mapbase = 0xa4000150,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 59,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1185,10 +1185,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xa4000140,
|
||||
.mapbase = 0xa4000140,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 55,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 2,
|
||||
},
|
||||
.type = PORT_IRDA,
|
||||
@ -1200,10 +1200,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xA4430000,
|
||||
.mapbase = 0xA4430000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 25,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1215,10 +1215,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe00000,
|
||||
.mapbase = 0xffe00000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 25,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1230,10 +1230,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe80000,
|
||||
.mapbase = 0xffe80000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 43,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1245,10 +1245,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe00000,
|
||||
.mapbase = 0xffe00000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 25,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1259,10 +1259,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe80000,
|
||||
.mapbase = 0xffe80000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 43,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1274,10 +1274,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xfe600000,
|
||||
.mapbase = 0xfe600000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 55,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1288,10 +1288,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xfe610000,
|
||||
.mapbase = 0xfe610000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 75,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1302,10 +1302,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xfe620000,
|
||||
.mapbase = 0xfe620000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 79,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 2,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1317,10 +1317,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe80000,
|
||||
.mapbase = 0xffe80000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 43,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1332,10 +1332,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe00000,
|
||||
.mapbase = 0xffe00000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 26,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1346,10 +1346,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0xffe80000,
|
||||
.mapbase = 0xffe80000,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 43,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1359,10 +1359,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
|
||||
{
|
||||
.port = {
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 42,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCIF,
|
||||
@ -1374,10 +1374,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffffb0,
|
||||
.mapbase = 0x00ffffb0,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 54,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1388,10 +1388,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffffb8,
|
||||
.mapbase = 0x00ffffb8,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 58,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1402,10 +1402,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffffc0,
|
||||
.mapbase = 0x00ffffc0,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 62,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 2,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1417,10 +1417,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffff78,
|
||||
.mapbase = 0x00ffff78,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 90,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1431,10 +1431,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffff80,
|
||||
.mapbase = 0x00ffff80,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 94,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 1,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
@ -1445,10 +1445,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
|
||||
.port = {
|
||||
.membase = (void *)0x00ffff88,
|
||||
.mapbase = 0x00ffff88,
|
||||
.iotype = SERIAL_IO_MEM,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = 98,
|
||||
.ops = &sci_uart_ops,
|
||||
.flags = ASYNC_BOOT_AUTOCONF,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 2,
|
||||
},
|
||||
.type = PORT_SCI,
|
||||
|
@ -669,7 +669,7 @@ static int sunsu_startup(struct uart_port *port)
|
||||
* if it is, then bail out, because there's likely no UART
|
||||
* here.
|
||||
*/
|
||||
if (!(up->port.flags & ASYNC_BUGGY_UART) &&
|
||||
if (!(up->port.flags & UPF_BUGGY_UART) &&
|
||||
(serial_inp(up, UART_LSR) == 0xff)) {
|
||||
printk("ttyS%d: LSR safety check engaged!\n", up->port.line);
|
||||
return -ENODEV;
|
||||
@ -707,7 +707,7 @@ static int sunsu_startup(struct uart_port *port)
|
||||
up->ier = UART_IER_RLSI | UART_IER_RDI;
|
||||
serial_outp(up, UART_IER, up->ier);
|
||||
|
||||
if (up->port.flags & ASYNC_FOURPORT) {
|
||||
if (up->port.flags & UPF_FOURPORT) {
|
||||
unsigned int icp;
|
||||
/*
|
||||
* Enable interrupts on the AST Fourport board
|
||||
@ -740,7 +740,7 @@ static void sunsu_shutdown(struct uart_port *port)
|
||||
serial_outp(up, UART_IER, 0);
|
||||
|
||||
spin_lock_irqsave(&up->port.lock, flags);
|
||||
if (up->port.flags & ASYNC_FOURPORT) {
|
||||
if (up->port.flags & UPF_FOURPORT) {
|
||||
/* reset interrupts on the AST Fourport board */
|
||||
inb((up->port.iobase & 0xfe0) | 0x1f);
|
||||
up->port.mctrl |= TIOCM_OUT1;
|
||||
@ -1132,7 +1132,7 @@ ebus_done:
|
||||
|
||||
spin_lock_irqsave(&up->port.lock, flags);
|
||||
|
||||
if (!(up->port.flags & ASYNC_BUGGY_UART)) {
|
||||
if (!(up->port.flags & UPF_BUGGY_UART)) {
|
||||
/*
|
||||
* Do a simple existence test first; if we fail this, there's
|
||||
* no point trying anything else.
|
||||
@ -1170,7 +1170,7 @@ ebus_done:
|
||||
* manufacturer would be stupid enough to design a board
|
||||
* that conflicts with COM 1-4 --- we hope!
|
||||
*/
|
||||
if (!(up->port.flags & ASYNC_SKIP_TEST)) {
|
||||
if (!(up->port.flags & UPF_SKIP_TEST)) {
|
||||
serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A);
|
||||
status1 = serial_inp(up, UART_MSR) & 0xF0;
|
||||
serial_outp(up, UART_MCR, save_mcr);
|
||||
@ -1371,7 +1371,7 @@ static __inline__ void wait_for_xmitr(struct uart_sunsu_port *up)
|
||||
} while ((status & BOTH_EMPTY) != BOTH_EMPTY);
|
||||
|
||||
/* Wait up to 1s for flow control if necessary */
|
||||
if (up->port.flags & ASYNC_CONS_FLOW) {
|
||||
if (up->port.flags & UPF_CONS_FLOW) {
|
||||
tmout = 1000000;
|
||||
while (--tmout &&
|
||||
((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0))
|
||||
@ -1513,7 +1513,7 @@ static int __init sunsu_serial_init(void)
|
||||
up->su_type == SU_PORT_KBD)
|
||||
continue;
|
||||
|
||||
up->port.flags |= ASYNC_BOOT_AUTOCONF;
|
||||
up->port.flags |= UPF_BOOT_AUTOCONF;
|
||||
up->port.type = PORT_UNKNOWN;
|
||||
up->port.uartclk = (SU_BASE_BAUD * 16);
|
||||
|
||||
|
@ -116,9 +116,10 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var)
|
||||
int ret = 0;
|
||||
|
||||
memset(&var->transp, 0, sizeof(var->transp));
|
||||
memset(&var->red, 0, sizeof(var->red));
|
||||
memset(&var->green, 0, sizeof(var->green));
|
||||
memset(&var->blue, 0, sizeof(var->blue));
|
||||
|
||||
var->red.msb_right = 0;
|
||||
var->green.msb_right = 0;
|
||||
var->blue.msb_right = 0;
|
||||
|
||||
switch (var->bits_per_pixel) {
|
||||
case 1:
|
||||
@ -133,34 +134,20 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var)
|
||||
var->blue.offset = 0;
|
||||
break;
|
||||
case 16:
|
||||
var->red.length = 5;
|
||||
var->green.length = 6;
|
||||
var->blue.length = 5;
|
||||
if (fb->panel->cntl & CNTL_BGR) {
|
||||
var->red.offset = 11;
|
||||
var->green.offset = 5;
|
||||
var->blue.offset = 0;
|
||||
} else {
|
||||
var->red.offset = 0;
|
||||
var->green.offset = 5;
|
||||
var->blue.offset = 11;
|
||||
}
|
||||
var->red.length = 5;
|
||||
var->blue.length = 5;
|
||||
/*
|
||||
* Green length can be 5 or 6 depending whether
|
||||
* we're operating in RGB555 or RGB565 mode.
|
||||
*/
|
||||
if (var->green.length != 5 && var->green.length != 6)
|
||||
var->green.length = 6;
|
||||
break;
|
||||
case 32:
|
||||
if (fb->panel->cntl & CNTL_LCDTFT) {
|
||||
var->red.length = 8;
|
||||
var->green.length = 8;
|
||||
var->blue.length = 8;
|
||||
|
||||
if (fb->panel->cntl & CNTL_BGR) {
|
||||
var->red.offset = 16;
|
||||
var->green.offset = 8;
|
||||
var->blue.offset = 0;
|
||||
} else {
|
||||
var->red.offset = 0;
|
||||
var->green.offset = 8;
|
||||
var->blue.offset = 16;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -168,6 +155,23 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var)
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* >= 16bpp displays have separate colour component bitfields
|
||||
* encoded in the pixel data. Calculate their position from
|
||||
* the bitfield length defined above.
|
||||
*/
|
||||
if (ret == 0 && var->bits_per_pixel >= 16) {
|
||||
if (fb->panel->cntl & CNTL_BGR) {
|
||||
var->blue.offset = 0;
|
||||
var->green.offset = var->blue.offset + var->blue.length;
|
||||
var->red.offset = var->green.offset + var->green.length;
|
||||
} else {
|
||||
var->red.offset = 0;
|
||||
var->green.offset = var->red.offset + var->red.length;
|
||||
var->blue.offset = var->green.offset + var->green.length;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
1
fs/bio.c
1
fs/bio.c
@ -411,6 +411,7 @@ static int __bio_add_page(request_queue_t *q, struct bio *bio, struct page
|
||||
|
||||
/**
|
||||
* bio_add_pc_page - attempt to add page to bio
|
||||
* @q: the target queue
|
||||
* @bio: destination bio
|
||||
* @page: page to add
|
||||
* @len: vec entry length
|
||||
|
@ -25,7 +25,7 @@
|
||||
.macro addruart, rx
|
||||
mrc p15, 0, \rx, c1, c0
|
||||
tst \rx, #1
|
||||
ldreq \rx, = S3C2410_PA_UART
|
||||
ldreq \rx, = S3C24XX_PA_UART
|
||||
ldrne \rx, = S3C24XX_VA_UART
|
||||
#if CONFIG_DEBUG_S3C2410_UART != 0
|
||||
add \rx, \rx, #(S3C2410_UART1_OFF * CONFIG_DEBUG_S3C2410_UART)
|
||||
@ -44,7 +44,7 @@
|
||||
1003:
|
||||
mrc p15, 0, \rd, c1, c0
|
||||
tst \rd, #1
|
||||
addeq \rd, \rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART)
|
||||
addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
|
||||
addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
|
||||
bic \rd, \rd, #0xff000
|
||||
ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
|
||||
@ -75,7 +75,7 @@
|
||||
1003:
|
||||
mrc p15, 0, \rd, c1, c0
|
||||
tst \rd, #1
|
||||
addeq \rd, \rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART)
|
||||
addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
|
||||
addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
|
||||
bic \rd, \rd, #0xff000
|
||||
ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
|
||||
|
@ -14,6 +14,7 @@
|
||||
* 06-Jan-2003 BJD Linux 2.6.0 version, moved bast specifics out
|
||||
* 10-Feb-2005 BJD Added CAMIF definition from guillaume.gourat@nexvision.tv
|
||||
* 10-Mar-2005 LCVR Added support to S3C2400, changed {VA,SZ} names
|
||||
* 15-Jan-2006 LCVR Added S3C24XX_PA macros for common S3C24XX resources
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MAP_H
|
||||
@ -188,5 +189,42 @@
|
||||
|
||||
#define S3C2400_SDRAM_PA (S3C2400_CS6)
|
||||
|
||||
/* Use a single interface for common resources between S3C24XX cpus */
|
||||
|
||||
#ifdef CONFIG_CPU_S3C2400
|
||||
#define S3C24XX_PA_IRQ S3C2400_PA_IRQ
|
||||
#define S3C24XX_PA_MEMCTRL S3C2400_PA_MEMCTRL
|
||||
#define S3C24XX_PA_USBHOST S3C2400_PA_USBHOST
|
||||
#define S3C24XX_PA_DMA S3C2400_PA_DMA
|
||||
#define S3C24XX_PA_CLKPWR S3C2400_PA_CLKPWR
|
||||
#define S3C24XX_PA_LCD S3C2400_PA_LCD
|
||||
#define S3C24XX_PA_UART S3C2400_PA_UART
|
||||
#define S3C24XX_PA_TIMER S3C2400_PA_TIMER
|
||||
#define S3C24XX_PA_USBDEV S3C2400_PA_USBDEV
|
||||
#define S3C24XX_PA_WATCHDOG S3C2400_PA_WATCHDOG
|
||||
#define S3C24XX_PA_IIC S3C2400_PA_IIC
|
||||
#define S3C24XX_PA_IIS S3C2400_PA_IIS
|
||||
#define S3C24XX_PA_GPIO S3C2400_PA_GPIO
|
||||
#define S3C24XX_PA_RTC S3C2400_PA_RTC
|
||||
#define S3C24XX_PA_ADC S3C2400_PA_ADC
|
||||
#define S3C24XX_PA_SPI S3C2400_PA_SPI
|
||||
#else
|
||||
#define S3C24XX_PA_IRQ S3C2410_PA_IRQ
|
||||
#define S3C24XX_PA_MEMCTRL S3C2410_PA_MEMCTRL
|
||||
#define S3C24XX_PA_USBHOST S3C2410_PA_USBHOST
|
||||
#define S3C24XX_PA_DMA S3C2410_PA_DMA
|
||||
#define S3C24XX_PA_CLKPWR S3C2410_PA_CLKPWR
|
||||
#define S3C24XX_PA_LCD S3C2410_PA_LCD
|
||||
#define S3C24XX_PA_UART S3C2410_PA_UART
|
||||
#define S3C24XX_PA_TIMER S3C2410_PA_TIMER
|
||||
#define S3C24XX_PA_USBDEV S3C2410_PA_USBDEV
|
||||
#define S3C24XX_PA_WATCHDOG S3C2410_PA_WATCHDOG
|
||||
#define S3C24XX_PA_IIC S3C2410_PA_IIC
|
||||
#define S3C24XX_PA_IIS S3C2410_PA_IIS
|
||||
#define S3C24XX_PA_GPIO S3C2410_PA_GPIO
|
||||
#define S3C24XX_PA_RTC S3C2410_PA_RTC
|
||||
#define S3C24XX_PA_ADC S3C2410_PA_ADC
|
||||
#define S3C24XX_PA_SPI S3C2410_PA_SPI
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_ARCH_MAP_H */
|
||||
|
@ -39,9 +39,9 @@
|
||||
#define S3C24XX_VA_UART1 (S3C24XX_VA_UART + 0x4000 )
|
||||
#define S3C24XX_VA_UART2 (S3C24XX_VA_UART + 0x8000 )
|
||||
|
||||
#define S3C2410_PA_UART0 (S3C2410_PA_UART)
|
||||
#define S3C2410_PA_UART1 (S3C2410_PA_UART + 0x4000 )
|
||||
#define S3C2410_PA_UART2 (S3C2410_PA_UART + 0x8000 )
|
||||
#define S3C2410_PA_UART0 (S3C24XX_PA_UART)
|
||||
#define S3C2410_PA_UART1 (S3C24XX_PA_UART + 0x4000 )
|
||||
#define S3C2410_PA_UART2 (S3C24XX_PA_UART + 0x8000 )
|
||||
|
||||
#define S3C2410_URXH (0x24)
|
||||
#define S3C2410_UTXH (0x20)
|
||||
|
@ -35,13 +35,13 @@
|
||||
#undef S3C2410_GPIOREG
|
||||
#undef S3C2410_WDOGREG
|
||||
|
||||
#define S3C2410_GPIOREG(x) ((S3C2410_PA_GPIO + (x)))
|
||||
#define S3C2410_WDOGREG(x) ((S3C2410_PA_WATCHDOG + (x)))
|
||||
#define S3C2410_GPIOREG(x) ((S3C24XX_PA_GPIO + (x)))
|
||||
#define S3C2410_WDOGREG(x) ((S3C24XX_PA_WATCHDOG + (x)))
|
||||
|
||||
/* how many bytes we allow into the FIFO at a time in FIFO mode */
|
||||
#define FIFO_MAX (14)
|
||||
|
||||
#define uart_base S3C2410_PA_UART + (0x4000*CONFIG_S3C2410_LOWLEVEL_UART_PORT)
|
||||
#define uart_base S3C24XX_PA_UART + (0x4000*CONFIG_S3C2410_LOWLEVEL_UART_PORT)
|
||||
|
||||
static __inline__ void
|
||||
uart_wr(unsigned int reg, unsigned int val)
|
||||
|
@ -26,6 +26,7 @@ struct meminfo;
|
||||
#define MT_MEMORY 5
|
||||
#define MT_ROM 6
|
||||
#define MT_IXP2000_DEVICE 7
|
||||
#define MT_NONSHARED_DEVICE 8
|
||||
|
||||
extern void create_memmap_holes(struct meminfo *);
|
||||
extern void memtable_init(struct meminfo *);
|
||||
|
@ -168,6 +168,7 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
|
||||
#define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
||||
#define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
|
||||
#define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
||||
#define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2))
|
||||
|
||||
/*
|
||||
* - coarse table (not used)
|
||||
|
@ -131,6 +131,28 @@ static void inline __read_lock(raw_rwlock_t *lock)
|
||||
: "memory");
|
||||
}
|
||||
|
||||
static int inline __read_trylock(raw_rwlock_t *lock)
|
||||
{
|
||||
int tmp1, tmp2;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: ldsw [%2], %0\n"
|
||||
" brlz,a,pn %0, 2f\n"
|
||||
" mov 0, %0\n"
|
||||
" add %0, 1, %1\n"
|
||||
" cas [%2], %0, %1\n"
|
||||
" cmp %0, %1\n"
|
||||
" membar #StoreLoad | #StoreStore\n"
|
||||
" bne,pn %%icc, 1b\n"
|
||||
" mov 1, %0\n"
|
||||
"2:"
|
||||
: "=&r" (tmp1), "=&r" (tmp2)
|
||||
: "r" (lock)
|
||||
: "memory");
|
||||
|
||||
return tmp1;
|
||||
}
|
||||
|
||||
static void inline __read_unlock(raw_rwlock_t *lock)
|
||||
{
|
||||
unsigned long tmp1, tmp2;
|
||||
@ -211,12 +233,12 @@ static int inline __write_trylock(raw_rwlock_t *lock)
|
||||
}
|
||||
|
||||
#define __raw_read_lock(p) __read_lock(p)
|
||||
#define __raw_read_trylock(p) __read_trylock(p)
|
||||
#define __raw_read_unlock(p) __read_unlock(p)
|
||||
#define __raw_write_lock(p) __write_lock(p)
|
||||
#define __raw_write_unlock(p) __write_unlock(p)
|
||||
#define __raw_write_trylock(p) __write_trylock(p)
|
||||
|
||||
#define __raw_read_trylock(lock) generic__raw_read_trylock(lock)
|
||||
#define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL))
|
||||
#define __raw_write_can_lock(rw) (!(rw)->lock)
|
||||
|
||||
|
@ -392,8 +392,8 @@ struct request_queue
|
||||
unsigned int nr_congestion_off;
|
||||
unsigned int nr_batching;
|
||||
|
||||
unsigned short max_sectors;
|
||||
unsigned short max_hw_sectors;
|
||||
unsigned int max_sectors;
|
||||
unsigned int max_hw_sectors;
|
||||
unsigned short max_phys_segments;
|
||||
unsigned short max_hw_segments;
|
||||
unsigned short hardsect_size;
|
||||
@ -697,7 +697,7 @@ extern request_queue_t *blk_init_queue(request_fn_proc *, spinlock_t *);
|
||||
extern void blk_cleanup_queue(request_queue_t *);
|
||||
extern void blk_queue_make_request(request_queue_t *, make_request_fn *);
|
||||
extern void blk_queue_bounce_limit(request_queue_t *, u64);
|
||||
extern void blk_queue_max_sectors(request_queue_t *, unsigned short);
|
||||
extern void blk_queue_max_sectors(request_queue_t *, unsigned int);
|
||||
extern void blk_queue_max_phys_segments(request_queue_t *, unsigned short);
|
||||
extern void blk_queue_max_hw_segments(request_queue_t *, unsigned short);
|
||||
extern void blk_queue_max_segment_size(request_queue_t *, unsigned int);
|
||||
|
@ -19,7 +19,21 @@ struct xt_get_revision
|
||||
/* For standard target */
|
||||
#define XT_RETURN (-NF_REPEAT - 1)
|
||||
|
||||
#define XT_ALIGN(s) (((s) + (__alignof__(u_int64_t)-1)) & ~(__alignof__(u_int64_t)-1))
|
||||
/* this is a dummy structure to find out the alignment requirement for a struct
|
||||
* containing all the fundamental data types that are used in ipt_entry,
|
||||
* ip6t_entry and arpt_entry. This sucks, and it is a hack. It will be my
|
||||
* personal pleasure to remove it -HW
|
||||
*/
|
||||
struct _xt_align
|
||||
{
|
||||
u_int8_t u8;
|
||||
u_int16_t u16;
|
||||
u_int32_t u32;
|
||||
u_int64_t u64;
|
||||
};
|
||||
|
||||
#define XT_ALIGN(s) (((s) + (__alignof__(struct _xt_align)-1)) \
|
||||
& ~(__alignof__(struct _xt_align)-1))
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define XT_STANDARD_TARGET ""
|
||||
|
@ -26,7 +26,7 @@ struct plat_serial8250_port {
|
||||
unsigned char regshift; /* register shift */
|
||||
unsigned char iotype; /* UPIO_* */
|
||||
unsigned char hub6;
|
||||
unsigned int flags; /* UPF_* flags */
|
||||
upf_t flags; /* UPF_* flags */
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -203,6 +203,8 @@ struct uart_icount {
|
||||
__u32 buf_overrun;
|
||||
};
|
||||
|
||||
typedef unsigned int __bitwise__ upf_t;
|
||||
|
||||
struct uart_port {
|
||||
spinlock_t lock; /* port lock */
|
||||
unsigned int iobase; /* in/out[bwl] */
|
||||
@ -230,36 +232,34 @@ struct uart_port {
|
||||
unsigned long sysrq; /* sysrq timeout */
|
||||
#endif
|
||||
|
||||
unsigned int flags;
|
||||
upf_t flags;
|
||||
|
||||
#define UPF_FOURPORT (1 << 1)
|
||||
#define UPF_SAK (1 << 2)
|
||||
#define UPF_SPD_MASK (0x1030)
|
||||
#define UPF_SPD_HI (0x0010)
|
||||
#define UPF_SPD_VHI (0x0020)
|
||||
#define UPF_SPD_CUST (0x0030)
|
||||
#define UPF_SPD_SHI (0x1000)
|
||||
#define UPF_SPD_WARP (0x1010)
|
||||
#define UPF_SKIP_TEST (1 << 6)
|
||||
#define UPF_AUTO_IRQ (1 << 7)
|
||||
#define UPF_HARDPPS_CD (1 << 11)
|
||||
#define UPF_LOW_LATENCY (1 << 13)
|
||||
#define UPF_BUGGY_UART (1 << 14)
|
||||
#define UPF_AUTOPROBE (1 << 15)
|
||||
#define UPF_MAGIC_MULTIPLIER (1 << 16)
|
||||
#define UPF_BOOT_ONLYMCA (1 << 22)
|
||||
#define UPF_CONS_FLOW (1 << 23)
|
||||
#define UPF_SHARE_IRQ (1 << 24)
|
||||
#define UPF_BOOT_AUTOCONF (1 << 28)
|
||||
#define UPF_IOREMAP (1 << 31)
|
||||
#define UPF_FOURPORT ((__force upf_t) (1 << 1))
|
||||
#define UPF_SAK ((__force upf_t) (1 << 2))
|
||||
#define UPF_SPD_MASK ((__force upf_t) (0x1030))
|
||||
#define UPF_SPD_HI ((__force upf_t) (0x0010))
|
||||
#define UPF_SPD_VHI ((__force upf_t) (0x0020))
|
||||
#define UPF_SPD_CUST ((__force upf_t) (0x0030))
|
||||
#define UPF_SPD_SHI ((__force upf_t) (0x1000))
|
||||
#define UPF_SPD_WARP ((__force upf_t) (0x1010))
|
||||
#define UPF_SKIP_TEST ((__force upf_t) (1 << 6))
|
||||
#define UPF_AUTO_IRQ ((__force upf_t) (1 << 7))
|
||||
#define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
|
||||
#define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
|
||||
#define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
|
||||
#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
|
||||
#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
|
||||
#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
|
||||
#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
|
||||
#define UPF_IOREMAP ((__force upf_t) (1 << 31))
|
||||
|
||||
#define UPF_CHANGE_MASK (0x17fff)
|
||||
#define UPF_USR_MASK (UPF_SPD_MASK|UPF_LOW_LATENCY)
|
||||
#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
|
||||
#define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
|
||||
|
||||
unsigned int mctrl; /* current modem ctrl settings */
|
||||
unsigned int timeout; /* character-based timeout */
|
||||
unsigned int type; /* port type */
|
||||
struct uart_ops *ops;
|
||||
const struct uart_ops *ops;
|
||||
unsigned int custom_divisor;
|
||||
unsigned int line; /* port index */
|
||||
unsigned long mapbase; /* for ioremap */
|
||||
@ -289,6 +289,9 @@ struct uart_state {
|
||||
};
|
||||
|
||||
#define UART_XMIT_SIZE PAGE_SIZE
|
||||
|
||||
typedef unsigned int __bitwise__ uif_t;
|
||||
|
||||
/*
|
||||
* This is the state information which is only valid when the port
|
||||
* is open; it may be freed by the core driver once the device has
|
||||
@ -298,17 +301,16 @@ struct uart_state {
|
||||
struct uart_info {
|
||||
struct tty_struct *tty;
|
||||
struct circ_buf xmit;
|
||||
unsigned int flags;
|
||||
uif_t flags;
|
||||
|
||||
/*
|
||||
* These are the flags that specific to info->flags, and reflect our
|
||||
* internal state. They can not be accessed via port->flags. Low
|
||||
* level drivers must not change these, but may query them instead.
|
||||
* Definitions for info->flags. These are _private_ to serial_core, and
|
||||
* are specific to this structure. They may be queried by low level drivers.
|
||||
*/
|
||||
#define UIF_CHECK_CD (1 << 25)
|
||||
#define UIF_CTS_FLOW (1 << 26)
|
||||
#define UIF_NORMAL_ACTIVE (1 << 29)
|
||||
#define UIF_INITIALIZED (1 << 31)
|
||||
#define UIF_CHECK_CD ((__force uif_t) (1 << 25))
|
||||
#define UIF_CTS_FLOW ((__force uif_t) (1 << 26))
|
||||
#define UIF_NORMAL_ACTIVE ((__force uif_t) (1 << 29))
|
||||
#define UIF_INITIALIZED ((__force uif_t) (1 << 31))
|
||||
|
||||
int blocked_open;
|
||||
|
||||
@ -430,7 +432,7 @@ static inline int uart_handle_break(struct uart_port *port)
|
||||
port->sysrq = 0;
|
||||
}
|
||||
#endif
|
||||
if (info->flags & UPF_SAK)
|
||||
if (port->flags & UPF_SAK)
|
||||
do_SAK(info->tty);
|
||||
return 0;
|
||||
}
|
||||
|
@ -803,9 +803,9 @@ enum ieee80211_state {
|
||||
#define IEEE80211_24GHZ_MAX_CHANNEL 14
|
||||
#define IEEE80211_24GHZ_CHANNELS 14
|
||||
|
||||
#define IEEE80211_52GHZ_MIN_CHANNEL 36
|
||||
#define IEEE80211_52GHZ_MIN_CHANNEL 34
|
||||
#define IEEE80211_52GHZ_MAX_CHANNEL 165
|
||||
#define IEEE80211_52GHZ_CHANNELS 32
|
||||
#define IEEE80211_52GHZ_CHANNELS 131
|
||||
|
||||
enum {
|
||||
IEEE80211_CH_PASSIVE_ONLY = (1 << 0),
|
||||
|
@ -554,7 +554,6 @@ struct Scsi_Host {
|
||||
/*
|
||||
* ordered write support
|
||||
*/
|
||||
unsigned ordered_flush:1;
|
||||
unsigned ordered_tag:1;
|
||||
|
||||
/*
|
||||
|
@ -114,16 +114,16 @@ rcu_torture_alloc(void)
|
||||
{
|
||||
struct list_head *p;
|
||||
|
||||
spin_lock(&rcu_torture_lock);
|
||||
spin_lock_bh(&rcu_torture_lock);
|
||||
if (list_empty(&rcu_torture_freelist)) {
|
||||
atomic_inc(&n_rcu_torture_alloc_fail);
|
||||
spin_unlock(&rcu_torture_lock);
|
||||
spin_unlock_bh(&rcu_torture_lock);
|
||||
return NULL;
|
||||
}
|
||||
atomic_inc(&n_rcu_torture_alloc);
|
||||
p = rcu_torture_freelist.next;
|
||||
list_del_init(p);
|
||||
spin_unlock(&rcu_torture_lock);
|
||||
spin_unlock_bh(&rcu_torture_lock);
|
||||
return container_of(p, struct rcu_torture, rtort_free);
|
||||
}
|
||||
|
||||
@ -134,9 +134,9 @@ static void
|
||||
rcu_torture_free(struct rcu_torture *p)
|
||||
{
|
||||
atomic_inc(&n_rcu_torture_free);
|
||||
spin_lock(&rcu_torture_lock);
|
||||
spin_lock_bh(&rcu_torture_lock);
|
||||
list_add_tail(&p->rtort_free, &rcu_torture_freelist);
|
||||
spin_unlock(&rcu_torture_lock);
|
||||
spin_unlock_bh(&rcu_torture_lock);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -5141,7 +5141,7 @@ static void init_sched_build_groups(struct sched_group groups[], cpumask_t span,
|
||||
#define SEARCH_SCOPE 2
|
||||
#define MIN_CACHE_SIZE (64*1024U)
|
||||
#define DEFAULT_CACHE_SIZE (5*1024*1024U)
|
||||
#define ITERATIONS 2
|
||||
#define ITERATIONS 1
|
||||
#define SIZE_THRESH 130
|
||||
#define COST_THRESH 130
|
||||
|
||||
@ -5480,9 +5480,9 @@ static unsigned long long measure_migration_cost(int cpu1, int cpu2)
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* Increase the cachesize in 5% steps:
|
||||
* Increase the cachesize in 10% steps:
|
||||
*/
|
||||
size = size * 20 / 19;
|
||||
size = size * 10 / 9;
|
||||
}
|
||||
|
||||
if (migration_debug)
|
||||
|
@ -155,7 +155,7 @@ int do_sys_settimeofday(struct timespec *tv, struct timezone *tz)
|
||||
static int firsttime = 1;
|
||||
int error = 0;
|
||||
|
||||
if (!timespec_valid(tv))
|
||||
if (tv && !timespec_valid(tv))
|
||||
return -EINVAL;
|
||||
|
||||
error = security_settime(tv, tz);
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/key.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
/*
|
||||
* UID task count cache, to get fast user lookup in "alloc_uid"
|
||||
@ -27,6 +28,12 @@
|
||||
|
||||
static kmem_cache_t *uid_cachep;
|
||||
static struct list_head uidhash_table[UIDHASH_SZ];
|
||||
|
||||
/*
|
||||
* The uidhash_lock is mostly taken from process context, but it is
|
||||
* occasionally also taken from softirq/tasklet context, when
|
||||
* task-structs get RCU-freed. Hence all locking must be softirq-safe.
|
||||
*/
|
||||
static DEFINE_SPINLOCK(uidhash_lock);
|
||||
|
||||
struct user_struct root_user = {
|
||||
@ -83,14 +90,15 @@ struct user_struct *find_user(uid_t uid)
|
||||
{
|
||||
struct user_struct *ret;
|
||||
|
||||
spin_lock(&uidhash_lock);
|
||||
spin_lock_bh(&uidhash_lock);
|
||||
ret = uid_hash_find(uid, uidhashentry(uid));
|
||||
spin_unlock(&uidhash_lock);
|
||||
spin_unlock_bh(&uidhash_lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void free_uid(struct user_struct *up)
|
||||
{
|
||||
local_bh_disable();
|
||||
if (up && atomic_dec_and_lock(&up->__count, &uidhash_lock)) {
|
||||
uid_hash_remove(up);
|
||||
key_put(up->uid_keyring);
|
||||
@ -98,6 +106,7 @@ void free_uid(struct user_struct *up)
|
||||
kmem_cache_free(uid_cachep, up);
|
||||
spin_unlock(&uidhash_lock);
|
||||
}
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
struct user_struct * alloc_uid(uid_t uid)
|
||||
@ -105,9 +114,9 @@ struct user_struct * alloc_uid(uid_t uid)
|
||||
struct list_head *hashent = uidhashentry(uid);
|
||||
struct user_struct *up;
|
||||
|
||||
spin_lock(&uidhash_lock);
|
||||
spin_lock_bh(&uidhash_lock);
|
||||
up = uid_hash_find(uid, hashent);
|
||||
spin_unlock(&uidhash_lock);
|
||||
spin_unlock_bh(&uidhash_lock);
|
||||
|
||||
if (!up) {
|
||||
struct user_struct *new;
|
||||
@ -137,7 +146,7 @@ struct user_struct * alloc_uid(uid_t uid)
|
||||
* Before adding this, check whether we raced
|
||||
* on adding the same user already..
|
||||
*/
|
||||
spin_lock(&uidhash_lock);
|
||||
spin_lock_bh(&uidhash_lock);
|
||||
up = uid_hash_find(uid, hashent);
|
||||
if (up) {
|
||||
key_put(new->uid_keyring);
|
||||
@ -147,7 +156,7 @@ struct user_struct * alloc_uid(uid_t uid)
|
||||
uid_hash_insert(new, hashent);
|
||||
up = new;
|
||||
}
|
||||
spin_unlock(&uidhash_lock);
|
||||
spin_unlock_bh(&uidhash_lock);
|
||||
|
||||
}
|
||||
return up;
|
||||
@ -183,9 +192,9 @@ static int __init uid_cache_init(void)
|
||||
INIT_LIST_HEAD(uidhash_table + n);
|
||||
|
||||
/* Insert the root user immediately (init already runs as root) */
|
||||
spin_lock(&uidhash_lock);
|
||||
spin_lock_bh(&uidhash_lock);
|
||||
uid_hash_insert(&root_user, uidhashentry(0));
|
||||
spin_unlock(&uidhash_lock);
|
||||
spin_unlock_bh(&uidhash_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2543,13 +2543,14 @@ int dev_ioctl(unsigned int cmd, void __user *arg)
|
||||
case SIOCBONDENSLAVE:
|
||||
case SIOCBONDRELEASE:
|
||||
case SIOCBONDSETHWADDR:
|
||||
case SIOCBONDSLAVEINFOQUERY:
|
||||
case SIOCBONDINFOQUERY:
|
||||
case SIOCBONDCHANGEACTIVE:
|
||||
case SIOCBRADDIF:
|
||||
case SIOCBRDELIF:
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
/* fall through */
|
||||
case SIOCBONDSLAVEINFOQUERY:
|
||||
case SIOCBONDINFOQUERY:
|
||||
dev_load(ifr.ifr_name);
|
||||
rtnl_lock();
|
||||
ret = dev_ifsioc(&ifr, cmd);
|
||||
|
@ -64,7 +64,7 @@ static inline void *load_pointer(struct sk_buff *skb, int k,
|
||||
}
|
||||
|
||||
/**
|
||||
* sk_run_filter - run a filter on a socket
|
||||
* sk_run_filter - run a filter on a socket
|
||||
* @skb: buffer to run the filter on
|
||||
* @filter: filter to apply
|
||||
* @flen: length of filter
|
||||
@ -78,8 +78,8 @@ unsigned int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int
|
||||
{
|
||||
struct sock_filter *fentry; /* We walk down these */
|
||||
void *ptr;
|
||||
u32 A = 0; /* Accumulator */
|
||||
u32 X = 0; /* Index Register */
|
||||
u32 A = 0; /* Accumulator */
|
||||
u32 X = 0; /* Index Register */
|
||||
u32 mem[BPF_MEMWORDS]; /* Scratch Memory Store */
|
||||
u32 tmp;
|
||||
int k;
|
||||
|
@ -135,13 +135,15 @@ void skb_under_panic(struct sk_buff *skb, int sz, void *here)
|
||||
struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
|
||||
int fclone)
|
||||
{
|
||||
kmem_cache_t *cache;
|
||||
struct skb_shared_info *shinfo;
|
||||
struct sk_buff *skb;
|
||||
u8 *data;
|
||||
|
||||
cache = fclone ? skbuff_fclone_cache : skbuff_head_cache;
|
||||
|
||||
/* Get the HEAD */
|
||||
skb = kmem_cache_alloc(fclone ? skbuff_fclone_cache : skbuff_head_cache,
|
||||
gfp_mask & ~__GFP_DMA);
|
||||
skb = kmem_cache_alloc(cache, gfp_mask & ~__GFP_DMA);
|
||||
if (!skb)
|
||||
goto out;
|
||||
|
||||
@ -180,7 +182,7 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
|
||||
out:
|
||||
return skb;
|
||||
nodata:
|
||||
kmem_cache_free(skbuff_head_cache, skb);
|
||||
kmem_cache_free(cache, skb);
|
||||
skb = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
@ -350,6 +350,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
|
||||
u8 src[ETH_ALEN];
|
||||
struct ieee80211_crypt_data *crypt = NULL;
|
||||
int keyidx = 0;
|
||||
int can_be_decrypted = 0;
|
||||
|
||||
hdr = (struct ieee80211_hdr_4addr *)skb->data;
|
||||
stats = &ieee->stats;
|
||||
@ -410,12 +411,23 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (is_multicast_ether_addr(hdr->addr1)
|
||||
? ieee->host_mc_decrypt : ieee->host_decrypt) {
|
||||
can_be_decrypted = (is_multicast_ether_addr(hdr->addr1) ||
|
||||
is_broadcast_ether_addr(hdr->addr2)) ?
|
||||
ieee->host_mc_decrypt : ieee->host_decrypt;
|
||||
|
||||
if (can_be_decrypted) {
|
||||
int idx = 0;
|
||||
if (skb->len >= hdrlen + 3)
|
||||
if (skb->len >= hdrlen + 3) {
|
||||
/* Top two-bits of byte 3 are the key index */
|
||||
idx = skb->data[hdrlen + 3] >> 6;
|
||||
}
|
||||
|
||||
/* ieee->crypt[] is WEP_KEY (4) in length. Given that idx
|
||||
* is only allowed 2-bits of storage, no value of idx can
|
||||
* be provided via above code that would result in idx
|
||||
* being out of range */
|
||||
crypt = ieee->crypt[idx];
|
||||
|
||||
#ifdef NOT_YET
|
||||
sta = NULL;
|
||||
|
||||
@ -553,7 +565,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
|
||||
|
||||
/* skb: hdr + (possibly fragmented, possibly encrypted) payload */
|
||||
|
||||
if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) &&
|
||||
if ((fc & IEEE80211_FCTL_PROTECTED) && can_be_decrypted &&
|
||||
(keyidx = ieee80211_rx_frame_decrypt(ieee, skb, crypt)) < 0)
|
||||
goto rx_dropped;
|
||||
|
||||
@ -617,7 +629,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
|
||||
|
||||
/* skb: hdr + (possible reassembled) full MSDU payload; possibly still
|
||||
* encrypted/authenticated */
|
||||
if (ieee->host_decrypt && (fc & IEEE80211_FCTL_PROTECTED) &&
|
||||
if ((fc & IEEE80211_FCTL_PROTECTED) && can_be_decrypted &&
|
||||
ieee80211_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt))
|
||||
goto rx_dropped;
|
||||
|
||||
@ -1439,7 +1451,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
|
||||
break;
|
||||
|
||||
case IEEE80211_STYPE_PROBE_REQ:
|
||||
IEEE80211_DEBUG_MGMT("recieved auth (%d)\n",
|
||||
IEEE80211_DEBUG_MGMT("received auth (%d)\n",
|
||||
WLAN_FC_GET_STYPE(le16_to_cpu
|
||||
(header->frame_ctl)));
|
||||
|
||||
@ -1473,7 +1485,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
|
||||
break;
|
||||
case IEEE80211_STYPE_AUTH:
|
||||
|
||||
IEEE80211_DEBUG_MGMT("recieved auth (%d)\n",
|
||||
IEEE80211_DEBUG_MGMT("received auth (%d)\n",
|
||||
WLAN_FC_GET_STYPE(le16_to_cpu
|
||||
(header->frame_ctl)));
|
||||
|
||||
|
@ -232,15 +232,18 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
|
||||
return start;
|
||||
}
|
||||
|
||||
#define SCAN_ITEM_SIZE 128
|
||||
|
||||
int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
|
||||
struct iw_request_info *info,
|
||||
union iwreq_data *wrqu, char *extra)
|
||||
{
|
||||
struct ieee80211_network *network;
|
||||
unsigned long flags;
|
||||
int err = 0;
|
||||
|
||||
char *ev = extra;
|
||||
char *stop = ev + IW_SCAN_MAX_DATA;
|
||||
char *stop = ev + wrqu->data.length;
|
||||
int i = 0;
|
||||
|
||||
IEEE80211_DEBUG_WX("Getting scan\n");
|
||||
@ -249,6 +252,11 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
|
||||
|
||||
list_for_each_entry(network, &ieee->network_list, list) {
|
||||
i++;
|
||||
if (stop - ev < SCAN_ITEM_SIZE) {
|
||||
err = -E2BIG;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ieee->scan_age == 0 ||
|
||||
time_after(network->last_scanned + ieee->scan_age, jiffies))
|
||||
ev = ipw2100_translate_scan(ieee, ev, stop, network);
|
||||
@ -270,7 +278,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
|
||||
|
||||
IEEE80211_DEBUG_WX("exit: %d networks returned.\n", i);
|
||||
|
||||
return 0;
|
||||
return err;
|
||||
}
|
||||
|
||||
int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
|
||||
|
@ -970,7 +970,6 @@ int igmp_rcv(struct sk_buff *skb)
|
||||
case IGMP_MTRACE_RESP:
|
||||
break;
|
||||
default:
|
||||
NETDEBUG(KERN_DEBUG "New IGMP type=%d, why we do not know about it?\n", ih->type);
|
||||
}
|
||||
|
||||
drop:
|
||||
|
@ -230,7 +230,6 @@ static void htcp_cong_avoid(struct sock *sk, u32 ack, u32 rtt,
|
||||
if (tp->snd_cwnd < tp->snd_cwnd_clamp)
|
||||
tp->snd_cwnd++;
|
||||
tp->snd_cwnd_cnt = 0;
|
||||
ca->ccount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1252,8 +1252,7 @@ int igmp6_event_query(struct sk_buff *skb)
|
||||
}
|
||||
} else {
|
||||
for (ma = idev->mc_list; ma; ma=ma->next) {
|
||||
if (group_type != IPV6_ADDR_ANY &&
|
||||
!ipv6_addr_equal(group, &ma->mca_addr))
|
||||
if (!ipv6_addr_equal(group, &ma->mca_addr))
|
||||
continue;
|
||||
spin_lock_bh(&ma->mca_lock);
|
||||
if (ma->mca_flags & MAF_TIMER_RUNNING) {
|
||||
@ -1268,11 +1267,10 @@ int igmp6_event_query(struct sk_buff *skb)
|
||||
ma->mca_flags &= ~MAF_GSQUERY;
|
||||
}
|
||||
if (!(ma->mca_flags & MAF_GSQUERY) ||
|
||||
mld_marksources(ma, ntohs(mlh2->nsrcs), mlh2->srcs))
|
||||
mld_marksources(ma, ntohs(mlh2->nsrcs), mlh2->srcs))
|
||||
igmp6_group_queried(ma, max_delay);
|
||||
spin_unlock_bh(&ma->mca_lock);
|
||||
if (group_type != IPV6_ADDR_ANY)
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
read_unlock_bh(&idev->lock);
|
||||
@ -1351,7 +1349,7 @@ static int is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type,
|
||||
* in all filters
|
||||
*/
|
||||
if (psf->sf_count[MCAST_INCLUDE])
|
||||
return 0;
|
||||
return type == MLD2_MODE_IS_INCLUDE;
|
||||
return pmc->mca_sfcount[MCAST_EXCLUDE] ==
|
||||
psf->sf_count[MCAST_EXCLUDE];
|
||||
}
|
||||
@ -1966,7 +1964,7 @@ static void sf_markstate(struct ifmcaddr6 *pmc)
|
||||
|
||||
static int sf_setstate(struct ifmcaddr6 *pmc)
|
||||
{
|
||||
struct ip6_sf_list *psf;
|
||||
struct ip6_sf_list *psf, *dpsf;
|
||||
int mca_xcount = pmc->mca_sfcount[MCAST_EXCLUDE];
|
||||
int qrv = pmc->idev->mc_qrv;
|
||||
int new_in, rv;
|
||||
@ -1978,8 +1976,48 @@ static int sf_setstate(struct ifmcaddr6 *pmc)
|
||||
!psf->sf_count[MCAST_INCLUDE];
|
||||
} else
|
||||
new_in = psf->sf_count[MCAST_INCLUDE] != 0;
|
||||
if (new_in != psf->sf_oldin) {
|
||||
psf->sf_crcount = qrv;
|
||||
if (new_in) {
|
||||
if (!psf->sf_oldin) {
|
||||
struct ip6_sf_list *prev = 0;
|
||||
|
||||
for (dpsf=pmc->mca_tomb; dpsf;
|
||||
dpsf=dpsf->sf_next) {
|
||||
if (ipv6_addr_equal(&dpsf->sf_addr,
|
||||
&psf->sf_addr))
|
||||
break;
|
||||
prev = dpsf;
|
||||
}
|
||||
if (dpsf) {
|
||||
if (prev)
|
||||
prev->sf_next = dpsf->sf_next;
|
||||
else
|
||||
pmc->mca_tomb = dpsf->sf_next;
|
||||
kfree(dpsf);
|
||||
}
|
||||
psf->sf_crcount = qrv;
|
||||
rv++;
|
||||
}
|
||||
} else if (psf->sf_oldin) {
|
||||
psf->sf_crcount = 0;
|
||||
/*
|
||||
* add or update "delete" records if an active filter
|
||||
* is now inactive
|
||||
*/
|
||||
for (dpsf=pmc->mca_tomb; dpsf; dpsf=dpsf->sf_next)
|
||||
if (ipv6_addr_equal(&dpsf->sf_addr,
|
||||
&psf->sf_addr))
|
||||
break;
|
||||
if (!dpsf) {
|
||||
dpsf = (struct ip6_sf_list *)
|
||||
kmalloc(sizeof(*dpsf), GFP_ATOMIC);
|
||||
if (!dpsf)
|
||||
continue;
|
||||
*dpsf = *psf;
|
||||
/* pmc->mca_lock held by callers */
|
||||
dpsf->sf_next = pmc->mca_tomb;
|
||||
pmc->mca_tomb = dpsf;
|
||||
}
|
||||
dpsf->sf_crcount = qrv;
|
||||
rv++;
|
||||
}
|
||||
}
|
||||
|
@ -1620,6 +1620,7 @@ static int key_notify_sa_flush(struct km_event *c)
|
||||
return -ENOBUFS;
|
||||
hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg));
|
||||
hdr->sadb_msg_satype = pfkey_proto2satype(c->data.proto);
|
||||
hdr->sadb_msg_type = SADB_FLUSH;
|
||||
hdr->sadb_msg_seq = c->seq;
|
||||
hdr->sadb_msg_pid = c->pid;
|
||||
hdr->sadb_msg_version = PF_KEY_V2;
|
||||
@ -2385,6 +2386,7 @@ static int key_notify_policy_flush(struct km_event *c)
|
||||
if (!skb_out)
|
||||
return -ENOBUFS;
|
||||
hdr = (struct sadb_msg *) skb_put(skb_out, sizeof(struct sadb_msg));
|
||||
hdr->sadb_msg_type = SADB_X_SPDFLUSH;
|
||||
hdr->sadb_msg_seq = c->seq;
|
||||
hdr->sadb_msg_pid = c->pid;
|
||||
hdr->sadb_msg_version = PF_KEY_V2;
|
||||
|
@ -365,7 +365,7 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock,
|
||||
*/
|
||||
|
||||
err = -EMSGSIZE;
|
||||
if(len>dev->mtu+dev->hard_header_len)
|
||||
if (len > dev->mtu + dev->hard_header_len)
|
||||
goto out_unlock;
|
||||
|
||||
err = -ENOBUFS;
|
||||
@ -935,7 +935,7 @@ static int packet_bind_spkt(struct socket *sock, struct sockaddr *uaddr, int add
|
||||
* Check legality
|
||||
*/
|
||||
|
||||
if(addr_len!=sizeof(struct sockaddr))
|
||||
if (addr_len != sizeof(struct sockaddr))
|
||||
return -EINVAL;
|
||||
strlcpy(name,uaddr->sa_data,sizeof(name));
|
||||
|
||||
@ -1092,7 +1092,7 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
* retries.
|
||||
*/
|
||||
|
||||
if(skb==NULL)
|
||||
if (skb == NULL)
|
||||
goto out;
|
||||
|
||||
/*
|
||||
@ -1392,8 +1392,8 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
|
||||
if (level != SOL_PACKET)
|
||||
return -ENOPROTOOPT;
|
||||
|
||||
if (get_user(len,optlen))
|
||||
return -EFAULT;
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
if (len < 0)
|
||||
return -EINVAL;
|
||||
@ -1419,9 +1419,9 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
|
||||
if (put_user(len, optlen))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
if (put_user(len, optlen))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -884,7 +884,7 @@ sctp_disposition_t sctp_sf_sendbeat_8_3(const struct sctp_endpoint *ep,
|
||||
{
|
||||
struct sctp_transport *transport = (struct sctp_transport *) arg;
|
||||
|
||||
if (asoc->overall_error_count > asoc->max_retrans) {
|
||||
if (asoc->overall_error_count >= asoc->max_retrans) {
|
||||
/* CMD_ASSOC_FAILED calls CMD_DELETE_TCB. */
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_ASSOC_FAILED,
|
||||
SCTP_U32(SCTP_ERROR_NO_ERROR));
|
||||
@ -2122,7 +2122,7 @@ static sctp_disposition_t sctp_sf_do_5_2_6_stale(const struct sctp_endpoint *ep,
|
||||
struct sctp_bind_addr *bp;
|
||||
int attempts = asoc->init_err_counter + 1;
|
||||
|
||||
if (attempts >= asoc->max_init_attempts) {
|
||||
if (attempts > asoc->max_init_attempts) {
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_INIT_FAILED,
|
||||
SCTP_U32(SCTP_ERROR_STALE_COOKIE));
|
||||
return SCTP_DISPOSITION_DELETE_TCB;
|
||||
@ -4640,7 +4640,7 @@ sctp_disposition_t sctp_sf_t1_init_timer_expire(const struct sctp_endpoint *ep,
|
||||
|
||||
SCTP_DEBUG_PRINTK("Timer T1 expired (INIT).\n");
|
||||
|
||||
if (attempts < asoc->max_init_attempts) {
|
||||
if (attempts <= asoc->max_init_attempts) {
|
||||
bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
|
||||
repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0);
|
||||
if (!repl)
|
||||
@ -4697,7 +4697,7 @@ sctp_disposition_t sctp_sf_t1_cookie_timer_expire(const struct sctp_endpoint *ep
|
||||
|
||||
SCTP_DEBUG_PRINTK("Timer T1 expired (COOKIE-ECHO).\n");
|
||||
|
||||
if (attempts < asoc->max_init_attempts) {
|
||||
if (attempts <= asoc->max_init_attempts) {
|
||||
repl = sctp_make_cookie_echo(asoc, NULL);
|
||||
if (!repl)
|
||||
return SCTP_DISPOSITION_NOMEM;
|
||||
|
@ -5426,7 +5426,7 @@ out:
|
||||
return err;
|
||||
|
||||
do_error:
|
||||
if (asoc->init_err_counter + 1 >= asoc->max_init_attempts)
|
||||
if (asoc->init_err_counter + 1 > asoc->max_init_attempts)
|
||||
err = -ETIMEDOUT;
|
||||
else
|
||||
err = -ECONNREFUSED;
|
||||
|
@ -368,8 +368,8 @@ static int seclvl_capable(struct task_struct *tsk, int cap)
|
||||
*/
|
||||
static int seclvl_settime(struct timespec *tv, struct timezone *tz)
|
||||
{
|
||||
struct timespec now;
|
||||
if (seclvl > 1) {
|
||||
if (tv && seclvl > 1) {
|
||||
struct timespec now;
|
||||
now = current_kernel_time();
|
||||
if (tv->tv_sec < now.tv_sec ||
|
||||
(tv->tv_sec == now.tv_sec && tv->tv_nsec < now.tv_nsec)) {
|
||||
|
Loading…
Reference in New Issue
Block a user