Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
d27ba47e
Commit
d27ba47e
authored
Nov 07, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
parents
e3d8b77b
dd3e2dcf
Changes
32
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
673 additions
and
1569 deletions
+673
-1569
Documentation/ioctl-number.txt
Documentation/ioctl-number.txt
+0
-2
arch/sparc/Kconfig
arch/sparc/Kconfig
+8
-0
arch/sparc/kernel/Makefile
arch/sparc/kernel/Makefile
+1
-0
arch/sparc/kernel/led.c
arch/sparc/kernel/led.c
+139
-0
arch/sparc/kernel/sunos_ioctl.c
arch/sparc/kernel/sunos_ioctl.c
+0
-1
arch/sparc64/kernel/ioctl32.c
arch/sparc64/kernel/ioctl32.c
+0
-459
arch/sparc64/kernel/setup.c
arch/sparc64/kernel/setup.c
+8
-4
arch/sparc64/kernel/signal32.c
arch/sparc64/kernel/signal32.c
+4
-2
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+22
-57
arch/sparc64/kernel/sunos_ioctl32.c
arch/sparc64/kernel/sunos_ioctl32.c
+0
-1
arch/sparc64/kernel/time.c
arch/sparc64/kernel/time.c
+2
-11
drivers/sbus/char/cpwatchdog.c
drivers/sbus/char/cpwatchdog.c
+24
-0
drivers/sbus/char/display7seg.c
drivers/sbus/char/display7seg.c
+20
-12
drivers/sbus/char/envctrl.c
drivers/sbus/char/envctrl.c
+10
-8
drivers/sbus/char/openprom.c
drivers/sbus/char/openprom.c
+33
-0
drivers/serial/sunsu.c
drivers/serial/sunsu.c
+1
-1
drivers/video/cg6.c
drivers/video/cg6.c
+0
-6
include/asm-m68k/kbio.h
include/asm-m68k/kbio.h
+0
-1
include/asm-m68k/vuid_event.h
include/asm-m68k/vuid_event.h
+0
-4
include/asm-sparc/audioio.h
include/asm-sparc/audioio.h
+0
-234
include/asm-sparc/kbio.h
include/asm-sparc/kbio.h
+0
-56
include/asm-sparc/termios.h
include/asm-sparc/termios.h
+0
-9
include/asm-sparc/vuid_event.h
include/asm-sparc/vuid_event.h
+0
-41
include/asm-sparc64/audioio.h
include/asm-sparc64/audioio.h
+0
-234
include/asm-sparc64/ebus.h
include/asm-sparc64/ebus.h
+1
-0
include/asm-sparc64/kbio.h
include/asm-sparc64/kbio.h
+0
-56
include/asm-sparc64/mmu_context.h
include/asm-sparc64/mmu_context.h
+24
-22
include/asm-sparc64/termios.h
include/asm-sparc64/termios.h
+0
-9
include/asm-sparc64/tlb.h
include/asm-sparc64/tlb.h
+5
-9
include/asm-sparc64/vuid_event.h
include/asm-sparc64/vuid_event.h
+0
-40
kernel/fork.c
kernel/fork.c
+0
-7
sound/sparc/cs4231.c
sound/sparc/cs4231.c
+371
-283
No files found.
Documentation/ioctl-number.txt
View file @
d27ba47e
...
...
@@ -130,8 +130,6 @@ Code Seq# Include File Comments
<mailto:zapman@interlan.net>
'i' 00-3F linux/i2o.h
'j' 00-3F linux/joystick.h
'k' all asm-sparc/kbio.h
asm-sparc64/kbio.h
'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
<http://mikonos.dia.unisa.it/tcfs>
'l' 40-7F linux/udf_fs_i.h in development:
...
...
arch/sparc/Kconfig
View file @
d27ba47e
...
...
@@ -201,6 +201,14 @@ config SUN_OPENPROMFS
Only choose N if you know in advance that you will not need to modify
OpenPROM settings on the running system.
config SPARC_LED
tristate "Sun4m LED driver"
help
This driver toggles the front-panel LED on sun4m systems
in a user-specifyable manner. It's state can be probed
by reading /proc/led and it's blinking mode can be changed
via writes to /proc/led
source "fs/Kconfig.binfmt"
config SUNOS_EMUL
...
...
arch/sparc/kernel/Makefile
View file @
d27ba47e
...
...
@@ -21,6 +21,7 @@ obj-$(CONFIG_SUN_AUXIO) += auxio.o
obj-$(CONFIG_PCI)
+=
ebus.o
obj-$(CONFIG_SUN_PM)
+=
apc.o pmc.o
obj-$(CONFIG_MODULES)
+=
module.o sparc_ksyms.o
obj-$(CONFIG_SPARC_LED)
+=
led.o
ifdef
CONFIG_SUNOS_EMUL
obj-y
+=
sys_sunos.o sunos_ioctl.o
...
...
arch/sparc/kernel/led.c
0 → 100644
View file @
d27ba47e
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <asm/auxio.h>
#define LED_MAX_LENGTH 8
/* maximum chars written to proc file */
static
inline
void
led_toggle
(
void
)
{
unsigned
char
val
=
get_auxio
();
unsigned
char
on
,
off
;
if
(
val
&
AUXIO_LED
)
{
on
=
0
;
off
=
AUXIO_LED
;
}
else
{
on
=
AUXIO_LED
;
off
=
0
;
}
set_auxio
(
on
,
off
);
}
static
struct
timer_list
led_blink_timer
;
static
void
led_blink
(
unsigned
long
timeout
)
{
led_toggle
();
/* reschedule */
if
(
!
timeout
)
{
/* blink according to load */
led_blink_timer
.
expires
=
jiffies
+
((
1
+
(
avenrun
[
0
]
>>
FSHIFT
))
*
HZ
);
led_blink_timer
.
data
=
0
;
}
else
{
/* blink at user specified interval */
led_blink_timer
.
expires
=
jiffies
+
(
timeout
*
HZ
);
led_blink_timer
.
data
=
timeout
;
}
add_timer
(
&
led_blink_timer
);
}
static
int
led_read_proc
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
count
,
int
*
eof
,
void
*
data
)
{
int
len
=
0
;
if
(
get_auxio
()
&
AUXIO_LED
)
len
=
sprintf
(
buf
,
"on
\n
"
);
else
len
=
sprintf
(
buf
,
"off
\n
"
);
return
len
;
}
static
int
led_write_proc
(
struct
file
*
file
,
const
char
*
buffer
,
unsigned
long
count
,
void
*
data
)
{
char
*
buf
=
NULL
;
if
(
count
>
LED_MAX_LENGTH
)
count
=
LED_MAX_LENGTH
;
buf
=
kmalloc
(
sizeof
(
char
)
*
(
count
+
1
),
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
if
(
copy_from_user
(
buf
,
buffer
,
count
))
{
kfree
(
buf
);
return
-
EFAULT
;
}
buf
[
count
]
=
'\0'
;
/* work around \n when echo'ing into proc */
if
(
buf
[
count
-
1
]
==
'\n'
)
buf
[
count
-
1
]
=
'\0'
;
/* before we change anything we want to stop any running timers,
* otherwise calls such as on will have no persistent effect
*/
del_timer_sync
(
&
led_blink_timer
);
if
(
!
strcmp
(
buf
,
"on"
))
{
auxio_set_led
(
AUXIO_LED_ON
);
}
else
if
(
!
strcmp
(
buf
,
"toggle"
))
{
led_toggle
();
}
else
if
((
*
buf
>
'0'
)
&&
(
*
buf
<=
'9'
))
{
led_blink
(
simple_strtoul
(
buf
,
NULL
,
10
));
}
else
if
(
!
strcmp
(
buf
,
"load"
))
{
led_blink
(
0
);
}
else
{
auxio_set_led
(
AUXIO_LED_OFF
);
}
kfree
(
buf
);
return
count
;
}
static
struct
proc_dir_entry
*
led
;
#define LED_VERSION "0.1"
static
int
__init
led_init
(
void
)
{
init_timer
(
&
led_blink_timer
);
led_blink_timer
.
function
=
led_blink
;
led
=
create_proc_entry
(
"led"
,
0
,
NULL
);
if
(
!
led
)
return
-
ENOMEM
;
led
->
read_proc
=
led_read_proc
;
/* reader function */
led
->
write_proc
=
led_write_proc
;
/* writer function */
led
->
owner
=
THIS_MODULE
;
printk
(
KERN_INFO
"led: version %s, Lars Kotthoff <metalhead@metalhead.ws>
\n
"
,
LED_VERSION
);
return
0
;
}
static
void
__exit
led_exit
(
void
)
{
remove_proc_entry
(
"led"
,
NULL
);
del_timer_sync
(
&
led_blink_timer
);
}
module_init
(
led_init
);
module_exit
(
led_exit
);
MODULE_AUTHOR
(
"Lars Kotthoff <metalhead@metalhead.ws>"
);
MODULE_DESCRIPTION
(
"Provides control of the front LED on SPARC systems."
);
MODULE_LICENSE
(
"GPL"
);
MODULE_VERSION
(
LED_VERSION
);
arch/sparc/kernel/sunos_ioctl.c
View file @
d27ba47e
...
...
@@ -23,7 +23,6 @@
#include <linux/smp_lock.h>
#include <linux/syscalls.h>
#include <linux/file.h>
#include <asm/kbio.h>
#if 0
extern char sunkbd_type;
...
...
arch/sparc64/kernel/ioctl32.c
View file @
d27ba47e
This diff is collapsed.
Click to expand it.
arch/sparc64/kernel/setup.c
View file @
d27ba47e
...
...
@@ -154,6 +154,7 @@ int prom_callback(long *args)
pud_t
*
pudp
;
pmd_t
*
pmdp
;
pte_t
*
ptep
;
pte_t
pte
;
for_each_process
(
p
)
{
mm
=
p
->
mm
;
...
...
@@ -178,8 +179,9 @@ int prom_callback(long *args)
* being called from inside OBP.
*/
ptep
=
pte_offset_map
(
pmdp
,
va
);
if
(
pte_present
(
*
ptep
))
{
tte
=
pte_val
(
*
ptep
);
pte
=
*
ptep
;
if
(
pte_present
(
pte
))
{
tte
=
pte_val
(
pte
);
res
=
PROM_TRUE
;
}
pte_unmap
(
ptep
);
...
...
@@ -218,6 +220,7 @@ int prom_callback(long *args)
pud_t
*
pudp
;
pmd_t
*
pmdp
;
pte_t
*
ptep
;
pte_t
pte
;
int
error
;
if
((
va
>=
LOW_OBP_ADDRESS
)
&&
(
va
<
HI_OBP_ADDRESS
))
{
...
...
@@ -240,8 +243,9 @@ int prom_callback(long *args)
* being called from inside OBP.
*/
ptep
=
pte_offset_kernel
(
pmdp
,
va
);
if
(
pte_present
(
*
ptep
))
{
tte
=
pte_val
(
*
ptep
);
pte
=
*
ptep
;
if
(
pte_present
(
pte
))
{
tte
=
pte_val
(
pte
);
res
=
PROM_TRUE
;
}
goto
done
;
...
...
arch/sparc64/kernel/signal32.c
View file @
d27ba47e
...
...
@@ -863,6 +863,7 @@ static void new_setup_frame32(struct k_sigaction *ka, struct pt_regs *regs,
pud_t
*
pudp
=
pud_offset
(
pgdp
,
address
);
pmd_t
*
pmdp
=
pmd_offset
(
pudp
,
address
);
pte_t
*
ptep
;
pte_t
pte
;
regs
->
u_regs
[
UREG_I7
]
=
(
unsigned
long
)
(
&
(
sf
->
insns
[
0
])
-
2
);
...
...
@@ -873,9 +874,10 @@ static void new_setup_frame32(struct k_sigaction *ka, struct pt_regs *regs,
preempt_disable
();
ptep
=
pte_offset_map
(
pmdp
,
address
);
if
(
pte_present
(
*
ptep
))
{
pte
=
*
ptep
;
if
(
pte_present
(
pte
))
{
unsigned
long
page
=
(
unsigned
long
)
page_address
(
pte_page
(
*
ptep
));
page_address
(
pte_page
(
pte
));
wmb
();
__asm__
__volatile__
(
"flush %0 + %1"
...
...
arch/sparc64/kernel/smp.c
View file @
d27ba47e
...
...
@@ -839,43 +839,29 @@ void smp_flush_tlb_all(void)
* questionable (in theory the big win for threads is the massive sharing of
* address space state across processors).
*/
/* This currently is only used by the hugetlb arch pre-fault
* hook on UltraSPARC-III+ and later when changing the pagesize
* bits of the context register for an address space.
*/
void
smp_flush_tlb_mm
(
struct
mm_struct
*
mm
)
{
/*
* This code is called from two places, dup_mmap and exit_mmap. In the
* former case, we really need a flush. In the later case, the callers
* are single threaded exec_mmap (really need a flush), multithreaded
* exec_mmap case (do not need to flush, since the caller gets a new
* context via activate_mm), and all other callers of mmput() whence
* the flush can be optimized since the associated threads are dead and
* the mm is being torn down (__exit_mm and other mmput callers) or the
* owning thread is dissociating itself from the mm. The
* (atomic_read(&mm->mm_users) == 0) check ensures real work is done
* for single thread exec and dup_mmap cases. An alternate check might
* have been (current->mm != mm).
* Kanoj Sarcar
*/
if
(
atomic_read
(
&
mm
->
mm_users
)
==
0
)
return
;
{
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
int
cpu
=
get_cpu
();
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
int
cpu
=
get_cpu
();
if
(
atomic_read
(
&
mm
->
mm_users
)
==
1
)
{
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
goto
local_flush_and_out
;
}
if
(
atomic_read
(
&
mm
->
mm_users
)
==
1
)
{
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
goto
local_flush_and_out
;
}
smp_cross_call_masked
(
&
xcall_flush_tlb_mm
,
ctx
,
0
,
0
,
mm
->
cpu_vm_mask
);
smp_cross_call_masked
(
&
xcall_flush_tlb_mm
,
ctx
,
0
,
0
,
mm
->
cpu_vm_mask
);
local_flush_and_out:
__flush_tlb_mm
(
ctx
,
SECONDARY_CONTEXT
);
local_flush_and_out:
__flush_tlb_mm
(
ctx
,
SECONDARY_CONTEXT
);
put_cpu
();
}
put_cpu
();
}
void
smp_flush_tlb_pending
(
struct
mm_struct
*
mm
,
unsigned
long
nr
,
unsigned
long
*
vaddrs
)
...
...
@@ -883,34 +869,13 @@ void smp_flush_tlb_pending(struct mm_struct *mm, unsigned long nr, unsigned long
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
int
cpu
=
get_cpu
();
if
(
mm
==
current
->
active_mm
&&
atomic_read
(
&
mm
->
mm_users
)
==
1
)
{
if
(
mm
==
current
->
active_mm
&&
atomic_read
(
&
mm
->
mm_users
)
==
1
)
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
goto
local_flush_and_out
;
}
else
{
/* This optimization is not valid. Normally
* we will be holding the page_table_lock, but
* there is an exception which is copy_page_range()
* when forking. The lock is held during the individual
* page table updates in the parent, but not at the
* top level, which is where we are invoked.
*/
if
(
0
)
{
cpumask_t
this_cpu_mask
=
cpumask_of_cpu
(
cpu
);
/* By virtue of running under the mm->page_table_lock,
* and mmu_context.h:switch_mm doing the same, the
* following operation is safe.
*/
if
(
cpus_equal
(
mm
->
cpu_vm_mask
,
this_cpu_mask
))
goto
local_flush_and_out
;
}
}
smp_cross_call_masked
(
&
xcall_flush_tlb_pending
,
ctx
,
nr
,
(
unsigned
long
)
vaddrs
,
mm
->
cpu_vm_mask
);
else
smp_cross_call_masked
(
&
xcall_flush_tlb_pending
,
ctx
,
nr
,
(
unsigned
long
)
vaddrs
,
mm
->
cpu_vm_mask
);
local_flush_and_out:
__flush_tlb_pending
(
ctx
,
nr
,
vaddrs
);
put_cpu
();
...
...
arch/sparc64/kernel/sunos_ioctl32.c
View file @
d27ba47e
...
...
@@ -24,7 +24,6 @@
#include <linux/smp_lock.h>
#include <linux/syscalls.h>
#include <linux/compat.h>
#include <asm/kbio.h>
#define SUNOS_NR_OPEN 256
...
...
arch/sparc64/kernel/time.c
View file @
d27ba47e
...
...
@@ -60,17 +60,6 @@ static void __iomem *mstk48t59_regs;
static
int
set_rtc_mmss
(
unsigned
long
);
static
__init
unsigned
long
dummy_get_tick
(
void
)
{
return
0
;
}
static
__initdata
struct
sparc64_tick_ops
dummy_tick_ops
=
{
.
get_tick
=
dummy_get_tick
,
};
struct
sparc64_tick_ops
*
tick_ops
__read_mostly
=
&
dummy_tick_ops
;
#define TICK_PRIV_BIT (1UL << 63)
#ifdef CONFIG_SMP
...
...
@@ -200,6 +189,8 @@ static struct sparc64_tick_ops tick_operations __read_mostly = {
.
softint_mask
=
1UL
<<
0
,
};
struct
sparc64_tick_ops
*
tick_ops
__read_mostly
=
&
tick_operations
;
static
void
stick_init_tick
(
unsigned
long
offset
)
{
tick_disable_protection
();
...
...
drivers/sbus/char/cpwatchdog.c
View file @
d27ba47e
...
...
@@ -26,6 +26,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <linux/smp_lock.h>
#include <asm/irq.h>
#include <asm/ebus.h>
#include <asm/oplib.h>
...
...
@@ -394,6 +395,28 @@ static int wd_ioctl(struct inode *inode, struct file *file,
return
(
0
);
}
static
long
wd_compat_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
int
rval
=
-
ENOIOCTLCMD
;
switch
(
cmd
)
{
/* solaris ioctls are specific to this driver */
case
WIOCSTART
:
case
WIOCSTOP
:
case
WIOCGSTAT
:
lock_kernel
();
rval
=
wd_ioctl
(
file
->
f_dentry
->
d_inode
,
file
,
cmd
,
arg
);
lock_kernel
();
break
;
/* everything else is handled by the generic compat layer */
default:
break
;
}
return
rval
;
}
static
ssize_t
wd_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
...
...
@@ -441,6 +464,7 @@ static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
static
struct
file_operations
wd_fops
=
{
.
owner
=
THIS_MODULE
,
.
ioctl
=
wd_ioctl
,
.
compat_ioctl
=
wd_compat_ioctl
,
.
open
=
wd_open
,
.
write
=
wd_write
,
.
read
=
wd_read
,
...
...
drivers/sbus/char/display7seg.c
View file @
d27ba47e
...
...
@@ -15,6 +15,7 @@
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/ioport.h>
/* request_region */
#include <linux/smp_lock.h>
#include <asm/atomic.h>
#include <asm/ebus.h>
/* EBus device */
#include <asm/oplib.h>
/* OpenProm Library */
...
...
@@ -114,22 +115,25 @@ static int d7s_release(struct inode *inode, struct file *f)
return
0
;
}
static
int
d7s_ioctl
(
struct
inode
*
inode
,
struct
file
*
f
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
long
d7s_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
__u8
regs
=
readb
(
d7s_regs
);
__u8
ireg
=
0
;
int
error
=
0
if
(
D7S_MINOR
!=
iminor
(
inode
))
if
(
D7S_MINOR
!=
iminor
(
file
->
f_dentry
->
d_
inode
))
return
-
ENODEV
;
lock_kernel
();
switch
(
cmd
)
{
case
D7SIOCWR
:
/* assign device register values
* we mask-out D7S_FLIP if in sol_compat mode
*/
if
(
get_user
(
ireg
,
(
int
__user
*
)
arg
))
return
-
EFAULT
;
if
(
get_user
(
ireg
,
(
int
__user
*
)
arg
))
{
error
=
-
EFAULT
;
break
;
}
if
(
0
!=
sol_compat
)
{
(
regs
&
D7S_FLIP
)
?
(
ireg
|=
D7S_FLIP
)
:
(
ireg
&=
~
D7S_FLIP
);
...
...
@@ -144,8 +148,10 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
* This driver will not misinform you about the state
* of your hardware while in sol_compat mode
*/
if
(
put_user
(
regs
,
(
int
__user
*
)
arg
))
return
-
EFAULT
;
if
(
put_user
(
regs
,
(
int
__user
*
)
arg
))
{
error
=
-
EFAULT
;
break
;
}
break
;
case
D7SIOCTM
:
...
...
@@ -155,15 +161,17 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
writeb
(
regs
,
d7s_regs
);
break
;
};
lock_kernel
();
return
0
;
return
error
;
}
static
struct
file_operations
d7s_fops
=
{
.
owner
=
THIS_MODULE
,
.
ioctl
=
d7s_ioctl
,
.
open
=
d7s_open
,
.
release
=
d7s_release
,
.
owner
=
THIS_MODULE
,
.
unlocked_ioctl
=
d7s_ioctl
,
.
compat_ioctl
=
d7s_ioctl
,
.
open
=
d7s_open
,
.
release
=
d7s_release
,
};
static
struct
miscdevice
d7s_miscdev
=
{
D7S_MINOR
,
D7S_DEVNAME
,
&
d7s_fops
};
...
...
drivers/sbus/char/envctrl.c
View file @
d27ba47e
...
...
@@ -654,9 +654,8 @@ envctrl_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
/* Function Description: Command what to read. Mapped to user ioctl().
* Return: Gives 0 for implemented commands, -EINVAL otherwise.
*/
static
int
envctrl_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
static
long
envctrl_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
char
__user
*
infobuf
;
...
...
@@ -715,11 +714,14 @@ envctrl_release(struct inode *inode, struct file *file)
}
static
struct
file_operations
envctrl_fops
=
{
.
owner
=
THIS_MODULE
,
.
read
=
envctrl_read
,
.
ioctl
=
envctrl_ioctl
,
.
open
=
envctrl_open
,
.
release
=
envctrl_release
,
.
owner
=
THIS_MODULE
,
.
read
=
envctrl_read
,
.
unlocked_ioctl
=
envctrl_ioctl
,
#ifdef CONFIG_COMPAT
.
compat_ioctl
=
envctrl_ioctl
,
#endif
.
open
=
envctrl_open
,
.
release
=
envctrl_release
,
};
static
struct
miscdevice
envctrl_dev
=
{
...
...
drivers/sbus/char/openprom.c
View file @
d27ba47e
...
...
@@ -39,6 +39,7 @@
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/miscdevice.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <asm/oplib.h>
...
...
@@ -565,6 +566,38 @@ static int openprom_ioctl(struct inode * inode, struct file * file,
}
}
static
long
openprom_compat_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
long
rval
=
-
ENOTTY
;
/*
* SunOS/Solaris only, the NetBSD one's have embedded pointers in
* the arg which we'd need to clean up...
*/
switch
(
cmd
)
{
case
OPROMGETOPT
:
case
OPROMSETOPT
:
case
OPROMNXTOPT
:
case
OPROMSETOPT2
:
case
OPROMNEXT
:
case
OPROMCHILD
:
case
OPROMGETPROP
:
case
OPROMNXTPROP
:
case
OPROMU2P
:
case
OPROMGETCONS
:
case
OPROMGETFBNAME
:
case
OPROMGETBOOTARGS
:
case
OPROMSETCUR
:
case
OPROMPCI2NODE
:
case
OPROMPATH2NODE
:
lock_kernel
();
rval
=
openprom_ioctl
(
file
->
f_dentry
->
d_inode
,
file
,
cmd
,
arg
);
lock_kernel
();
break
;
}
}
static
int
openprom_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
DATA
*
data
;
...
...
drivers/serial/sunsu.c
View file @
d27ba47e
...
...
@@ -1441,7 +1441,7 @@ static void sunsu_console_write(struct console *co, const char *s,
* - initialize the serial port
* Return non-zero if we didn't find a serial port.
*/
static
int
__init
sunsu_console_setup
(
struct
console
*
co
,
char
*
options
)
static
int
sunsu_console_setup
(
struct
console
*
co
,
char
*
options
)
{
struct
uart_port
*
port
;
int
baud
=
9600
;
...
...
drivers/video/cg6.c
View file @
d27ba47e
...
...
@@ -653,12 +653,6 @@ static void cg6_chip_init(struct fb_info *info)
sbus_writel
(
0
,
&
fbc
->
clipminy
);
sbus_writel
(
info
->
var
.
xres
-
1
,
&
fbc
->
clipmaxx
);
sbus_writel
(
info
->
var
.
yres
-
1
,
&
fbc
->
clipmaxy
);
/* Disable cursor in Brooktree DAC. */
sbus_writel
(
0x06
<<
24
,
&
par
->
bt
->
addr
);
tmp
=
sbus_readl
(
&
par
->
bt
->
control
);
tmp
&=
~
(
0x03
<<
24
);
sbus_writel
(
tmp
,
&
par
->
bt
->
control
);
}
struct
all_info
{
...
...
include/asm-m68k/kbio.h
deleted
100644 → 0
View file @
e3d8b77b
#include <asm-sparc/kbio.h>
include/asm-m68k/vuid_event.h
deleted
100644 → 0
View file @
e3d8b77b
#ifndef _M68K_VUID_EVENT_H
#define _M68K_VUID_EVENT_H
#include <asm-sparc/vuid_event.h>
#endif
include/asm-sparc/audioio.h
deleted
100644 → 0
View file @
e3d8b77b
/*
* include/asm-sparc/audioio.h
*
* Sparc Audio Midlayer
* Copyright (C) 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu)
*/
#ifndef _AUDIOIO_H_
#define _AUDIOIO_H_
/*
* SunOS/Solaris /dev/audio interface
*/
#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
#include <linux/types.h>
#include <linux/time.h>
#include <linux/ioctl.h>
#endif
/*
* This structure contains state information for audio device IO streams.
*/
typedef
struct
audio_prinfo
{
/*
* The following values describe the audio data encoding.
*/
unsigned
int
sample_rate
;
/* samples per second */
unsigned
int
channels
;
/* number of interleaved channels */
unsigned
int
precision
;
/* bit-width of each sample */
unsigned
int
encoding
;
/* data encoding method */
/*
* The following values control audio device configuration
*/
unsigned
int
gain
;
/* gain level: 0 - 255 */
unsigned
int
port
;
/* selected I/O port (see below) */
unsigned
int
avail_ports
;
/* available I/O ports (see below) */
unsigned
int
_xxx
[
2
];
/* Reserved for future use */
unsigned
int
buffer_size
;
/* I/O buffer size */
/*
* The following values describe driver state
*/
unsigned
int
samples
;
/* number of samples converted */
unsigned
int
eof
;
/* End Of File counter (play only) */
unsigned
char
pause
;
/* non-zero for pause, zero to resume */
unsigned
char
error
;
/* non-zero if overflow/underflow */
unsigned
char
waiting
;
/* non-zero if a process wants access */
unsigned
char
balance
;
/* stereo channel balance */
unsigned
short
minordev
;
/*
* The following values are read-only state flags
*/
unsigned
char
open
;
/* non-zero if open access permitted */
unsigned
char
active
;
/* non-zero if I/O is active */
}
audio_prinfo_t
;
/*
* This structure describes the current state of the audio device.
*/
typedef
struct
audio_info
{
/*
* Per-stream information
*/
audio_prinfo_t
play
;
/* output status information */
audio_prinfo_t
record
;
/* input status information */
/*
* Per-unit/channel information
*/
unsigned
int
monitor_gain
;
/* input to output mix: 0 - 255 */
unsigned
char
output_muted
;
/* non-zero if output is muted */
unsigned
char
_xxx
[
3
];
/* Reserved for future use */
unsigned
int
_yyy
[
3
];
/* Reserved for future use */
}
audio_info_t
;
/*
* Audio encoding types
*/
#define AUDIO_ENCODING_NONE (0)
/* no encoding assigned */
#define AUDIO_ENCODING_ULAW (1)
/* u-law encoding */
#define AUDIO_ENCODING_ALAW (2)
/* A-law encoding */
#define AUDIO_ENCODING_LINEAR (3)
/* Linear PCM encoding */
#define AUDIO_ENCODING_FLOAT (4)
/* IEEE float (-1. <-> +1.) */
#define AUDIO_ENCODING_DVI (104)
/* DVI ADPCM */
#define AUDIO_ENCODING_LINEAR8 (105)
/* 8 bit UNSIGNED */
#define AUDIO_ENCODING_LINEARLE (106)
/* Linear PCM LE encoding */
/*
* These ranges apply to record, play, and monitor gain values
*/
#define AUDIO_MIN_GAIN (0)
/* minimum gain value */
#define AUDIO_MAX_GAIN (255)
/* maximum gain value */
/*
* These values apply to the balance field to adjust channel gain values
*/
#define AUDIO_LEFT_BALANCE (0)
/* left channel only */
#define AUDIO_MID_BALANCE (32)
/* equal left/right channel */
#define AUDIO_RIGHT_BALANCE (64)
/* right channel only */
#define AUDIO_BALANCE_SHIFT (3)
/*
* Generic minimum/maximum limits for number of channels, both modes
*/
#define AUDIO_MIN_PLAY_CHANNELS (1)
#define AUDIO_MAX_PLAY_CHANNELS (4)
#define AUDIO_MIN_REC_CHANNELS (1)
#define AUDIO_MAX_REC_CHANNELS (4)
/*
* Generic minimum/maximum limits for sample precision
*/
#define AUDIO_MIN_PLAY_PRECISION (8)
#define AUDIO_MAX_PLAY_PRECISION (32)
#define AUDIO_MIN_REC_PRECISION (8)
#define AUDIO_MAX_REC_PRECISION (32)
/*
* Define some convenient names for typical audio ports
*/
/*
* output ports (several may be enabled simultaneously)
*/
#define AUDIO_SPEAKER 0x01
/* output to built-in speaker */
#define AUDIO_HEADPHONE 0x02
/* output to headphone jack */
#define AUDIO_LINE_OUT 0x04
/* output to line out */
/*
* input ports (usually only one at a time)
*/
#define AUDIO_MICROPHONE 0x01
/* input from microphone */
#define AUDIO_LINE_IN 0x02
/* input from line in */
#define AUDIO_CD 0x04
/* input from on-board CD inputs */
#define AUDIO_INTERNAL_CD_IN AUDIO_CD
/* input from internal CDROM */
#define AUDIO_ANALOG_LOOPBACK 0x40
/* input from output */
/*
* This macro initializes an audio_info structure to 'harmless' values.
* Note that (~0) might not be a harmless value for a flag that was
* a signed int.
*/
#define AUDIO_INITINFO(i) { \
unsigned int *__x__; \
for (__x__ = (unsigned int *)(i); \
(char *) __x__ < (((char *)(i)) + sizeof (audio_info_t)); \
*__x__++ = ~0); \
}
/*
* These allow testing for what the user wants to set
*/
#define AUD_INITVALUE (~0)
#define Modify(X) ((unsigned int)(X) != AUD_INITVALUE)
#define Modifys(X) ((X) != (unsigned short)AUD_INITVALUE)
#define Modifyc(X) ((X) != (unsigned char)AUD_INITVALUE)
/*
* Parameter for the AUDIO_GETDEV ioctl to determine current
* audio devices.
*/
#define MAX_AUDIO_DEV_LEN (16)
typedef
struct
audio_device
{
char
name
[
MAX_AUDIO_DEV_LEN
];
char
version
[
MAX_AUDIO_DEV_LEN
];
char
config
[
MAX_AUDIO_DEV_LEN
];
}
audio_device_t
;
/*
* Ioctl calls for the audio device.
*/
/*
* AUDIO_GETINFO retrieves the current state of the audio device.
*
* AUDIO_SETINFO copies all fields of the audio_info structure whose
* values are not set to the initialized value (-1) to the device state.
* It performs an implicit AUDIO_GETINFO to return the new state of the
* device. Note that the record.samples and play.samples fields are set
* to the last value before the AUDIO_SETINFO took effect. This allows
* an application to reset the counters while atomically retrieving the
* last value.
*
* AUDIO_DRAIN suspends the calling process until the write buffers are
* empty.
*
* AUDIO_GETDEV returns a structure of type audio_device_t which contains
* three strings. The string "name" is a short identifying string (for
* example, the SBus Fcode name string), the string "version" identifies
* the current version of the device, and the "config" string identifies
* the specific configuration of the audio stream. All fields are
* device-dependent -- see the device specific manual pages for details.
*
* AUDIO_GETDEV_SUNOS returns a number which is an audio device defined
* herein (making it not too portable)
*
* AUDIO_FLUSH stops all playback and recording, clears all queued buffers,
* resets error counters, and restarts recording and playback as appropriate
* for the current sampling mode.
*/
#define AUDIO_GETINFO _IOR('A', 1, audio_info_t)
#define AUDIO_SETINFO _IOWR('A', 2, audio_info_t)
#define AUDIO_DRAIN _IO('A', 3)
#define AUDIO_GETDEV _IOR('A', 4, audio_device_t)
#define AUDIO_GETDEV_SUNOS _IOR('A', 4, int)
#define AUDIO_FLUSH _IO('A', 5)
/* Define possible audio hardware configurations for
* old SunOS-style AUDIO_GETDEV ioctl */
#define AUDIO_DEV_UNKNOWN (0)
/* not defined */
#define AUDIO_DEV_AMD (1)
/* audioamd device */
#define AUDIO_DEV_SPEAKERBOX (2)
/* dbri device with speakerbox */
#define AUDIO_DEV_CODEC (3)
/* dbri device (internal speaker) */
#define AUDIO_DEV_CS4231 (5)
/* cs4231 device */
/*
* The following ioctl sets the audio device into an internal loopback mode,
* if the hardware supports this. The argument is TRUE to set loopback,
* FALSE to reset to normal operation. If the hardware does not support
* internal loopback, the ioctl should fail with EINVAL.
* Causes ADC data to be digitally mixed in and sent to the DAC.
*/
#define AUDIO_DIAG_LOOPBACK _IOW('A', 101, int)
#endif
/* _AUDIOIO_H_ */
include/asm-sparc/kbio.h
deleted
100644 → 0
View file @
e3d8b77b
#ifndef __LINUX_KBIO_H
#define __LINUX_KBIO_H
/* Return keyboard type */
#define KIOCTYPE _IOR('k', 9, int)
/* Return Keyboard layout */
#define KIOCLAYOUT _IOR('k', 20, int)
enum
{
TR_NONE
,
TR_ASCII
,
/* keyboard is in regular state */
TR_EVENT
,
/* keystrokes sent as firm events */
TR_UNTRANS_EVENT
/* EVENT+up and down+no translation */
};
/* Return the current keyboard translation */
#define KIOCGTRANS _IOR('k', 5, int)
/* Set the keyboard translation */
#define KIOCTRANS _IOW('k', 0, int)
/* Send a keyboard command */
#define KIOCCMD _IOW('k', 8, int)
/* Return if keystrokes are being sent to /dev/kbd */
/* Set routing of keystrokes to /dev/kbd */
#define KIOCSDIRECT _IOW('k', 10, int)
/* Set keyboard leds */
#define KIOCSLED _IOW('k', 14, unsigned char)
/* Get keyboard leds */
#define KIOCGLED _IOR('k', 15, unsigned char)
/* Used by KIOC[GS]RATE */
struct
kbd_rate
{
unsigned
char
delay
;
/* Delay in Hz before first repeat. */
unsigned
char
rate
;
/* In characters per second (0..50). */
};
/* Set keyboard rate */
#define KIOCSRATE _IOW('k', 40, struct kbd_rate)
/* Get keyboard rate */
#define KIOCGRATE _IOW('k', 41, struct kbd_rate)
/* Top bit records if the key is up or down */
#define KBD_UP 0x80
/* Usable information */
#define KBD_KEYMASK 0x7f
/* All keys up */
#define KBD_IDLE 0x75
#endif
/* __LINUX_KBIO_H */
include/asm-sparc/termios.h
View file @
d27ba47e
...
...
@@ -38,15 +38,6 @@ struct sunos_ttysize {
int
st_columns
;
/* Columns on the terminal */
};
/* Used for packet mode */
#define TIOCPKT_DATA 0
#define TIOCPKT_FLUSHREAD 1
#define TIOCPKT_FLUSHWRITE 2
#define TIOCPKT_STOP 4
#define TIOCPKT_START 8
#define TIOCPKT_NOSTOP 16
#define TIOCPKT_DOSTOP 32
struct
winsize
{
unsigned
short
ws_row
;
unsigned
short
ws_col
;
...
...
include/asm-sparc/vuid_event.h
deleted
100644 → 0
View file @
e3d8b77b
/* SunOS Virtual User Input Device (VUID) compatibility */
typedef
struct
firm_event
{
unsigned
short
id
;
/* tag for this event */
unsigned
char
pair_type
;
/* unused by X11 */
unsigned
char
pair
;
/* unused by X11 */
int
value
;
/* VKEY_UP, VKEY_DOWN or delta */
struct
timeval
time
;
}
Firm_event
;
enum
{
FE_PAIR_NONE
,
FE_PAIR_SET
,
FE_PAIR_DELTA
,
FE_PAIR_ABSOLUTE
};
/* VUID stream formats */
#define VUID_NATIVE 0
/* Native byte stream format */
#define VUID_FIRM_EVENT 1
/* send firm_event structures */
/* ioctls */
/* Set input device byte stream format (any of VUID_{NATIVE,FIRM_EVENT}) */
#define VUIDSFORMAT _IOW('v', 1, int)
/* Retrieve input device byte stream format */
#define VUIDGFORMAT _IOR('v', 2, int)
/* Possible tag values */
/* mouse buttons: */
#define MS_LEFT 0x7f20
#define MS_MIDDLE 0x7f21
#define MS_RIGHT 0x7f22
/* motion: */
#define LOC_X_DELTA 0x7f80
#define LOC_Y_DELTA 0x7f81
#define LOC_X_ABSOLUTE 0x7f82
/* X compat, unsupported */
#define LOC_Y_ABSOLUTE 0x7f83
/* X compat, unsupported */
#define VKEY_UP 0
#define VKEY_DOWN 1
include/asm-sparc64/audioio.h
deleted
100644 → 0
View file @
e3d8b77b
/*
* include/asm-sparc/audioio.h
*
* Sparc Audio Midlayer
* Copyright (C) 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu)
*/
#ifndef _AUDIOIO_H_
#define _AUDIOIO_H_
/*
* SunOS/Solaris /dev/audio interface
*/
#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
#include <linux/types.h>
#include <linux/time.h>
#include <linux/ioctl.h>
#endif
/*
* This structure contains state information for audio device IO streams.
*/
typedef
struct
audio_prinfo
{
/*
* The following values describe the audio data encoding.
*/
unsigned
int
sample_rate
;
/* samples per second */
unsigned
int
channels
;
/* number of interleaved channels */
unsigned
int
precision
;
/* bit-width of each sample */
unsigned
int
encoding
;
/* data encoding method */
/*
* The following values control audio device configuration
*/
unsigned
int
gain
;
/* gain level: 0 - 255 */
unsigned
int
port
;
/* selected I/O port (see below) */
unsigned
int
avail_ports
;
/* available I/O ports (see below) */
unsigned
int
_xxx
[
2
];
/* Reserved for future use */
unsigned
int
buffer_size
;
/* I/O buffer size */
/*
* The following values describe driver state
*/
unsigned
int
samples
;
/* number of samples converted */
unsigned
int
eof
;
/* End Of File counter (play only) */
unsigned
char
pause
;
/* non-zero for pause, zero to resume */
unsigned
char
error
;
/* non-zero if overflow/underflow */
unsigned
char
waiting
;
/* non-zero if a process wants access */
unsigned
char
balance
;
/* stereo channel balance */
unsigned
short
minordev
;
/*
* The following values are read-only state flags
*/
unsigned
char
open
;
/* non-zero if open access permitted */
unsigned
char
active
;
/* non-zero if I/O is active */
}
audio_prinfo_t
;
/*
* This structure describes the current state of the audio device.
*/
typedef
struct
audio_info
{
/*
* Per-stream information
*/
audio_prinfo_t
play
;
/* output status information */
audio_prinfo_t
record
;
/* input status information */
/*
* Per-unit/channel information
*/
unsigned
int
monitor_gain
;
/* input to output mix: 0 - 255 */
unsigned
char
output_muted
;
/* non-zero if output is muted */
unsigned
char
_xxx
[
3
];
/* Reserved for future use */
unsigned
int
_yyy
[
3
];
/* Reserved for future use */
}
audio_info_t
;
/*
* Audio encoding types
*/
#define AUDIO_ENCODING_NONE (0)
/* no encoding assigned */
#define AUDIO_ENCODING_ULAW (1)
/* u-law encoding */
#define AUDIO_ENCODING_ALAW (2)
/* A-law encoding */
#define AUDIO_ENCODING_LINEAR (3)
/* Linear PCM encoding */
#define AUDIO_ENCODING_FLOAT (4)
/* IEEE float (-1. <-> +1.) */
#define AUDIO_ENCODING_DVI (104)
/* DVI ADPCM */
#define AUDIO_ENCODING_LINEAR8 (105)
/* 8 bit UNSIGNED */
#define AUDIO_ENCODING_LINEARLE (106)
/* Linear PCM LE encoding */
/*
* These ranges apply to record, play, and monitor gain values
*/
#define AUDIO_MIN_GAIN (0)
/* minimum gain value */
#define AUDIO_MAX_GAIN (255)
/* maximum gain value */
/*
* These values apply to the balance field to adjust channel gain values
*/
#define AUDIO_LEFT_BALANCE (0)
/* left channel only */
#define AUDIO_MID_BALANCE (32)
/* equal left/right channel */
#define AUDIO_RIGHT_BALANCE (64)
/* right channel only */
#define AUDIO_BALANCE_SHIFT (3)
/*
* Generic minimum/maximum limits for number of channels, both modes
*/
#define AUDIO_MIN_PLAY_CHANNELS (1)
#define AUDIO_MAX_PLAY_CHANNELS (4)
#define AUDIO_MIN_REC_CHANNELS (1)
#define AUDIO_MAX_REC_CHANNELS (4)
/*
* Generic minimum/maximum limits for sample precision
*/
#define AUDIO_MIN_PLAY_PRECISION (8)
#define AUDIO_MAX_PLAY_PRECISION (32)
#define AUDIO_MIN_REC_PRECISION (8)
#define AUDIO_MAX_REC_PRECISION (32)
/*
* Define some convenient names for typical audio ports
*/
/*
* output ports (several may be enabled simultaneously)
*/
#define AUDIO_SPEAKER 0x01
/* output to built-in speaker */
#define AUDIO_HEADPHONE 0x02
/* output to headphone jack */
#define AUDIO_LINE_OUT 0x04
/* output to line out */
/*
* input ports (usually only one at a time)
*/
#define AUDIO_MICROPHONE 0x01
/* input from microphone */
#define AUDIO_LINE_IN 0x02
/* input from line in */
#define AUDIO_CD 0x04
/* input from on-board CD inputs */
#define AUDIO_INTERNAL_CD_IN AUDIO_CD
/* input from internal CDROM */
#define AUDIO_ANALOG_LOOPBACK 0x40
/* input from output */
/*
* This macro initializes an audio_info structure to 'harmless' values.
* Note that (~0) might not be a harmless value for a flag that was
* a signed int.
*/
#define AUDIO_INITINFO(i) { \
unsigned int *__x__; \
for (__x__ = (unsigned int *)(i); \
(char *) __x__ < (((char *)(i)) + sizeof (audio_info_t)); \
*__x__++ = ~0); \
}
/*
* These allow testing for what the user wants to set
*/
#define AUD_INITVALUE (~0)
#define Modify(X) ((unsigned int)(X) != AUD_INITVALUE)
#define Modifys(X) ((X) != (unsigned short)AUD_INITVALUE)
#define Modifyc(X) ((X) != (unsigned char)AUD_INITVALUE)
/*
* Parameter for the AUDIO_GETDEV ioctl to determine current
* audio devices.
*/
#define MAX_AUDIO_DEV_LEN (16)
typedef
struct
audio_device
{
char
name
[
MAX_AUDIO_DEV_LEN
];
char
version
[
MAX_AUDIO_DEV_LEN
];
char
config
[
MAX_AUDIO_DEV_LEN
];
}
audio_device_t
;
/*
* Ioctl calls for the audio device.
*/
/*
* AUDIO_GETINFO retrieves the current state of the audio device.
*
* AUDIO_SETINFO copies all fields of the audio_info structure whose
* values are not set to the initialized value (-1) to the device state.
* It performs an implicit AUDIO_GETINFO to return the new state of the
* device. Note that the record.samples and play.samples fields are set
* to the last value before the AUDIO_SETINFO took effect. This allows
* an application to reset the counters while atomically retrieving the
* last value.
*
* AUDIO_DRAIN suspends the calling process until the write buffers are
* empty.
*
* AUDIO_GETDEV returns a structure of type audio_device_t which contains
* three strings. The string "name" is a short identifying string (for
* example, the SBus Fcode name string), the string "version" identifies
* the current version of the device, and the "config" string identifies
* the specific configuration of the audio stream. All fields are
* device-dependent -- see the device specific manual pages for details.
*
* AUDIO_GETDEV_SUNOS returns a number which is an audio device defined
* herein (making it not too portable)
*
* AUDIO_FLUSH stops all playback and recording, clears all queued buffers,
* resets error counters, and restarts recording and playback as appropriate
* for the current sampling mode.
*/
#define AUDIO_GETINFO _IOR('A', 1, audio_info_t)
#define AUDIO_SETINFO _IOWR('A', 2, audio_info_t)
#define AUDIO_DRAIN _IO('A', 3)
#define AUDIO_GETDEV _IOR('A', 4, audio_device_t)
#define AUDIO_GETDEV_SUNOS _IOR('A', 4, int)
#define AUDIO_FLUSH _IO('A', 5)
/* Define possible audio hardware configurations for
* old SunOS-style AUDIO_GETDEV ioctl */
#define AUDIO_DEV_UNKNOWN (0)
/* not defined */
#define AUDIO_DEV_AMD (1)
/* audioamd device */
#define AUDIO_DEV_SPEAKERBOX (2)
/* dbri device with speakerbox */
#define AUDIO_DEV_CODEC (3)
/* dbri device (internal speaker) */
#define AUDIO_DEV_CS4231 (5)
/* cs4231 device */
/*
* The following ioctl sets the audio device into an internal loopback mode,
* if the hardware supports this. The argument is TRUE to set loopback,
* FALSE to reset to normal operation. If the hardware does not support
* internal loopback, the ioctl should fail with EINVAL.
* Causes ADC data to be digitally mixed in and sent to the DAC.
*/
#define AUDIO_DIAG_LOOPBACK _IOW('A', 101, int)
#endif
/* _AUDIOIO_H_ */
include/asm-sparc64/ebus.h
View file @
d27ba47e
...
...
@@ -79,6 +79,7 @@ extern int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr,
size_t
len
);
extern
void
ebus_dma_prepare
(
struct
ebus_dma_info
*
p
,
int
write
);
extern
unsigned
int
ebus_dma_residue
(
struct
ebus_dma_info
*
p
);
extern
unsigned
int
ebus_dma_addr
(
struct
ebus_dma_info
*
p
);
extern
void
ebus_dma_enable
(
struct
ebus_dma_info
*
p
,
int
on
);
extern
struct
linux_ebus
*
ebus_chain
;
...
...
include/asm-sparc64/kbio.h
deleted
100644 → 0
View file @
e3d8b77b
#ifndef __LINUX_KBIO_H
#define __LINUX_KBIO_H
/* Return keyboard type */
#define KIOCTYPE _IOR('k', 9, int)
/* Return Keyboard layout */
#define KIOCLAYOUT _IOR('k', 20, int)
enum
{
TR_NONE
,
TR_ASCII
,
/* keyboard is in regular state */
TR_EVENT
,
/* keystrokes sent as firm events */
TR_UNTRANS_EVENT
/* EVENT+up and down+no translation */
};
/* Return the current keyboard translation */
#define KIOCGTRANS _IOR('k', 5, int)
/* Set the keyboard translation */
#define KIOCTRANS _IOW('k', 0, int)
/* Send a keyboard command */
#define KIOCCMD _IOW('k', 8, int)
/* Return if keystrokes are being sent to /dev/kbd */
/* Set routing of keystrokes to /dev/kbd */
#define KIOCSDIRECT _IOW('k', 10, int)
/* Set keyboard leds */
#define KIOCSLED _IOW('k', 14, unsigned char)
/* Get keyboard leds */
#define KIOCGLED _IOR('k', 15, unsigned char)
/* Used by KIOC[GS]RATE */
struct
kbd_rate
{
unsigned
char
delay
;
/* Delay in Hz before first repeat. */
unsigned
char
rate
;
/* In characters per second (0..50). */
};
/* Set keyboard rate */
#define KIOCSRATE _IOW('k', 40, struct kbd_rate)
/* Get keyboard rate */
#define KIOCGRATE _IOW('k', 41, struct kbd_rate)
/* Top bit records if the key is up or down */
#define KBD_UP 0x80
/* Usable information */
#define KBD_KEYMASK 0x7f
/* All keys up */
#define KBD_IDLE 0x75
#endif
/* __LINUX_KBIO_H */
include/asm-sparc64/mmu_context.h
View file @
d27ba47e
...
...
@@ -87,37 +87,35 @@ extern void __flush_tlb_mm(unsigned long, unsigned long);
static
inline
void
switch_mm
(
struct
mm_struct
*
old_mm
,
struct
mm_struct
*
mm
,
struct
task_struct
*
tsk
)
{
unsigned
long
ctx_valid
;
int
cpu
;
/* Note: page_table_lock is used here to serialize switch_mm
* and activate_mm, and their calls to get_new_mmu_context.
* This use of page_table_lock is unrelated to its other uses.
*/
spin_lock
(
&
mm
->
page_table_lock
);
if
(
CTX_VALID
(
mm
->
context
))
ctx_valid
=
1
;
else
ctx_valid
=
0
;
ctx_valid
=
CTX_VALID
(
mm
->
context
);
if
(
!
ctx_valid
)
get_new_mmu_context
(
mm
);
spin_unlock
(
&
mm
->
page_table_lock
)
;
if
(
!
ctx_valid
||
(
old_mm
!=
mm
))
{
if
(
!
ctx_valid
)
get_new_mmu_context
(
mm
);
load_secondary_context
(
mm
);
reload_tlbmiss_state
(
tsk
,
mm
);
}
{
int
cpu
=
smp_processor_id
();
/* Even if (mm == old_mm) we _must_ check
* the cpu_vm_mask. If we do not we could
* corrupt the TLB state because of how
* smp_flush_tlb_{page,range,mm} on sparc64
* and lazy tlb switches work. -DaveM
*/
if
(
!
ctx_valid
||
!
cpu_isset
(
cpu
,
mm
->
cpu_vm_mask
))
{
cpu_set
(
cpu
,
mm
->
cpu_vm_mask
);
__flush_tlb_mm
(
CTX_HWBITS
(
mm
->
context
),
SECONDARY_CONTEXT
);
}
/* Even if (mm == old_mm) we _must_ check
* the cpu_vm_mask. If we do not we could
* corrupt the TLB state because of how
* smp_flush_tlb_{page,range,mm} on sparc64
* and lazy tlb switches work. -DaveM
*/
cpu
=
smp_processor_id
();
if
(
!
ctx_valid
||
!
cpu_isset
(
cpu
,
mm
->
cpu_vm_mask
))
{
cpu_set
(
cpu
,
mm
->
cpu_vm_mask
);
__flush_tlb_mm
(
CTX_HWBITS
(
mm
->
context
),
SECONDARY_CONTEXT
);
}
spin_unlock
(
&
mm
->
page_table_lock
);
}
#define deactivate_mm(tsk,mm) do { } while (0)
...
...
@@ -127,6 +125,10 @@ static inline void activate_mm(struct mm_struct *active_mm, struct mm_struct *mm
{
int
cpu
;
/* Note: page_table_lock is used here to serialize switch_mm
* and activate_mm, and their calls to get_new_mmu_context.
* This use of page_table_lock is unrelated to its other uses.
*/
spin_lock
(
&
mm
->
page_table_lock
);
if
(
!
CTX_VALID
(
mm
->
context
))
get_new_mmu_context
(
mm
);
...
...
include/asm-sparc64/termios.h
View file @
d27ba47e
...
...
@@ -38,15 +38,6 @@ struct sunos_ttysize {
int
st_columns
;
/* Columns on the terminal */
};
/* Used for packet mode */
#define TIOCPKT_DATA 0
#define TIOCPKT_FLUSHREAD 1
#define TIOCPKT_FLUSHWRITE 2
#define TIOCPKT_STOP 4
#define TIOCPKT_START 8
#define TIOCPKT_NOSTOP 16
#define TIOCPKT_DOSTOP 32
struct
winsize
{
unsigned
short
ws_row
;
unsigned
short
ws_col
;
...
...
include/asm-sparc64/tlb.h
View file @
d27ba47e
...
...
@@ -58,11 +58,9 @@ static inline struct mmu_gather *tlb_gather_mmu(struct mm_struct *mm, unsigned i
static
inline
void
tlb_flush_mmu
(
struct
mmu_gather
*
mp
)
{
if
(
mp
->
need_flush
)
{
free_pages_and_swap_cache
(
mp
->
pages
,
mp
->
pages_nr
);
mp
->
pages_nr
=
0
;
mp
->
need_flush
=
0
;
if
(
!
tlb_fast_mode
(
mp
))
{
free_pages_and_swap_cache
(
mp
->
pages
,
mp
->
pages_nr
);
mp
->
pages_nr
=
0
;
}
}
}
...
...
@@ -78,11 +76,9 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un
{
tlb_flush_mmu
(
mp
);
if
(
mp
->
fullmm
)
{
if
(
CTX_VALID
(
mp
->
mm
->
context
))
do_flush_tlb_mm
(
mp
->
mm
);
if
(
mp
->
fullmm
)
mp
->
fullmm
=
0
;
}
else
else
flush_tlb_pending
();
/* keep the page table cache within bounds */
...
...
@@ -93,11 +89,11 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un
static
inline
void
tlb_remove_page
(
struct
mmu_gather
*
mp
,
struct
page
*
page
)
{
mp
->
need_flush
=
1
;
if
(
tlb_fast_mode
(
mp
))
{
free_page_and_swap_cache
(
page
);
return
;
}
mp
->
need_flush
=
1
;
mp
->
pages
[
mp
->
pages_nr
++
]
=
page
;
if
(
mp
->
pages_nr
>=
FREE_PTE_NR
)
tlb_flush_mmu
(
mp
);
...
...
include/asm-sparc64/vuid_event.h
deleted
100644 → 0
View file @
e3d8b77b
/* SunOS Virtual User Input Device (VUID) compatibility */
typedef
struct
firm_event
{
unsigned
short
id
;
/* tag for this event */
unsigned
char
pair_type
;
/* unused by X11 */
unsigned
char
pair
;
/* unused by X11 */
int
value
;
/* VKEY_UP, VKEY_DOWN or delta */
struct
timeval
time
;
}
Firm_event
;
enum
{
FE_PAIR_NONE
,
FE_PAIR_SET
,
FE_PAIR_DELTA
,
FE_PAIR_ABSOLUTE
};
/* VUID stream formats */
#define VUID_NATIVE 0
/* Native byte stream format */
#define VUID_FIRM_EVENT 1
/* send firm_event structures */
/* ioctls */
/* Set input device byte stream format (any of VUID_{NATIVE,FIRM_EVENT}) */
#define VUIDSFORMAT _IOW('v', 1, int)
/* Retrieve input device byte stream format */
#define VUIDGFORMAT _IOR('v', 2, int)
/* Possible tag values */
/* mouse buttons: */
#define MS_LEFT 0x7f20
#define MS_MIDDLE 0x7f21
#define MS_RIGHT 0x7f22
/* motion: */
#define LOC_X_DELTA 0x7f80
#define LOC_Y_DELTA 0x7f81
#define LOC_X_ABSOLUTE 0x7f82
/* X compat, unsupported */
#define LOC_Y_ABSOLUTE 0x7f83
/* X compat, unsupported */
#define VKEY_UP 0
#define VKEY_DOWN 1
kernel/fork.c
View file @
d27ba47e
...
...
@@ -470,13 +470,6 @@ static int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
if
(
clone_flags
&
CLONE_VM
)
{
atomic_inc
(
&
oldmm
->
mm_users
);
mm
=
oldmm
;
/*
* There are cases where the PTL is held to ensure no
* new threads start up in user mode using an mm, which
* allows optimizing out ipis; the tlb_gather_mmu code
* is an example.
*/
spin_unlock_wait
(
&
oldmm
->
page_table_lock
);
goto
good_mm
;
}
...
...
sound/sparc/cs4231.c
View file @
d27ba47e
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment