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
nexedi
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
...
@@ -130,8 +130,6 @@ Code Seq# Include File Comments
<mailto:zapman@interlan.net>
<mailto:zapman@interlan.net>
'i' 00-3F linux/i2o.h
'i' 00-3F linux/i2o.h
'j' 00-3F linux/joystick.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
'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
<http://mikonos.dia.unisa.it/tcfs>
<http://mikonos.dia.unisa.it/tcfs>
'l' 40-7F linux/udf_fs_i.h in development:
'l' 40-7F linux/udf_fs_i.h in development:
...
...
arch/sparc/Kconfig
View file @
d27ba47e
...
@@ -201,6 +201,14 @@ config SUN_OPENPROMFS
...
@@ -201,6 +201,14 @@ config SUN_OPENPROMFS
Only choose N if you know in advance that you will not need to modify
Only choose N if you know in advance that you will not need to modify
OpenPROM settings on the running system.
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"
source "fs/Kconfig.binfmt"
config SUNOS_EMUL
config SUNOS_EMUL
...
...
arch/sparc/kernel/Makefile
View file @
d27ba47e
...
@@ -21,6 +21,7 @@ obj-$(CONFIG_SUN_AUXIO) += auxio.o
...
@@ -21,6 +21,7 @@ obj-$(CONFIG_SUN_AUXIO) += auxio.o
obj-$(CONFIG_PCI)
+=
ebus.o
obj-$(CONFIG_PCI)
+=
ebus.o
obj-$(CONFIG_SUN_PM)
+=
apc.o pmc.o
obj-$(CONFIG_SUN_PM)
+=
apc.o pmc.o
obj-$(CONFIG_MODULES)
+=
module.o sparc_ksyms.o
obj-$(CONFIG_MODULES)
+=
module.o sparc_ksyms.o
obj-$(CONFIG_SPARC_LED)
+=
led.o
ifdef
CONFIG_SUNOS_EMUL
ifdef
CONFIG_SUNOS_EMUL
obj-y
+=
sys_sunos.o sunos_ioctl.o
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 @@
...
@@ -23,7 +23,6 @@
#include <linux/smp_lock.h>
#include <linux/smp_lock.h>
#include <linux/syscalls.h>
#include <linux/syscalls.h>
#include <linux/file.h>
#include <linux/file.h>
#include <asm/kbio.h>
#if 0
#if 0
extern char sunkbd_type;
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)
...
@@ -154,6 +154,7 @@ int prom_callback(long *args)
pud_t
*
pudp
;
pud_t
*
pudp
;
pmd_t
*
pmdp
;
pmd_t
*
pmdp
;
pte_t
*
ptep
;
pte_t
*
ptep
;
pte_t
pte
;
for_each_process
(
p
)
{
for_each_process
(
p
)
{
mm
=
p
->
mm
;
mm
=
p
->
mm
;
...
@@ -178,8 +179,9 @@ int prom_callback(long *args)
...
@@ -178,8 +179,9 @@ int prom_callback(long *args)
* being called from inside OBP.
* being called from inside OBP.
*/
*/
ptep
=
pte_offset_map
(
pmdp
,
va
);
ptep
=
pte_offset_map
(
pmdp
,
va
);
if
(
pte_present
(
*
ptep
))
{
pte
=
*
ptep
;
tte
=
pte_val
(
*
ptep
);
if
(
pte_present
(
pte
))
{
tte
=
pte_val
(
pte
);
res
=
PROM_TRUE
;
res
=
PROM_TRUE
;
}
}
pte_unmap
(
ptep
);
pte_unmap
(
ptep
);
...
@@ -218,6 +220,7 @@ int prom_callback(long *args)
...
@@ -218,6 +220,7 @@ int prom_callback(long *args)
pud_t
*
pudp
;
pud_t
*
pudp
;
pmd_t
*
pmdp
;
pmd_t
*
pmdp
;
pte_t
*
ptep
;
pte_t
*
ptep
;
pte_t
pte
;
int
error
;
int
error
;
if
((
va
>=
LOW_OBP_ADDRESS
)
&&
(
va
<
HI_OBP_ADDRESS
))
{
if
((
va
>=
LOW_OBP_ADDRESS
)
&&
(
va
<
HI_OBP_ADDRESS
))
{
...
@@ -240,8 +243,9 @@ int prom_callback(long *args)
...
@@ -240,8 +243,9 @@ int prom_callback(long *args)
* being called from inside OBP.
* being called from inside OBP.
*/
*/
ptep
=
pte_offset_kernel
(
pmdp
,
va
);
ptep
=
pte_offset_kernel
(
pmdp
,
va
);
if
(
pte_present
(
*
ptep
))
{
pte
=
*
ptep
;
tte
=
pte_val
(
*
ptep
);
if
(
pte_present
(
pte
))
{
tte
=
pte_val
(
pte
);
res
=
PROM_TRUE
;
res
=
PROM_TRUE
;
}
}
goto
done
;
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,
...
@@ -863,6 +863,7 @@ static void new_setup_frame32(struct k_sigaction *ka, struct pt_regs *regs,
pud_t
*
pudp
=
pud_offset
(
pgdp
,
address
);
pud_t
*
pudp
=
pud_offset
(
pgdp
,
address
);
pmd_t
*
pmdp
=
pmd_offset
(
pudp
,
address
);
pmd_t
*
pmdp
=
pmd_offset
(
pudp
,
address
);
pte_t
*
ptep
;
pte_t
*
ptep
;
pte_t
pte
;
regs
->
u_regs
[
UREG_I7
]
=
(
unsigned
long
)
(
&
(
sf
->
insns
[
0
])
-
2
);
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,
...
@@ -873,9 +874,10 @@ static void new_setup_frame32(struct k_sigaction *ka, struct pt_regs *regs,
preempt_disable
();
preempt_disable
();
ptep
=
pte_offset_map
(
pmdp
,
address
);
ptep
=
pte_offset_map
(
pmdp
,
address
);
if
(
pte_present
(
*
ptep
))
{
pte
=
*
ptep
;
if
(
pte_present
(
pte
))
{
unsigned
long
page
=
(
unsigned
long
)
unsigned
long
page
=
(
unsigned
long
)
page_address
(
pte_page
(
*
ptep
));
page_address
(
pte_page
(
pte
));
wmb
();
wmb
();
__asm__
__volatile__
(
"flush %0 + %1"
__asm__
__volatile__
(
"flush %0 + %1"
...
...
arch/sparc64/kernel/smp.c
View file @
d27ba47e
...
@@ -839,43 +839,29 @@ void smp_flush_tlb_all(void)
...
@@ -839,43 +839,29 @@ void smp_flush_tlb_all(void)
* questionable (in theory the big win for threads is the massive sharing of
* questionable (in theory the big win for threads is the massive sharing of
* address space state across processors).
* 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
)
void
smp_flush_tlb_mm
(
struct
mm_struct
*
mm
)
{
{
/*
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
* This code is called from two places, dup_mmap and exit_mmap. In the
int
cpu
=
get_cpu
();
* 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
();
if
(
atomic_read
(
&
mm
->
mm_users
)
==
1
)
{
if
(
atomic_read
(
&
mm
->
mm_users
)
==
1
)
{
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
goto
local_flush_and_out
;
goto
local_flush_and_out
;
}
}
smp_cross_call_masked
(
&
xcall_flush_tlb_mm
,
smp_cross_call_masked
(
&
xcall_flush_tlb_mm
,
ctx
,
0
,
0
,
ctx
,
0
,
0
,
mm
->
cpu_vm_mask
);
mm
->
cpu_vm_mask
);
local_flush_and_out:
local_flush_and_out:
__flush_tlb_mm
(
ctx
,
SECONDARY_CONTEXT
);
__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
)
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
...
@@ -883,34 +869,13 @@ void smp_flush_tlb_pending(struct mm_struct *mm, unsigned long nr, unsigned long
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
u32
ctx
=
CTX_HWBITS
(
mm
->
context
);
int
cpu
=
get_cpu
();
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
);
mm
->
cpu_vm_mask
=
cpumask_of_cpu
(
cpu
);
goto
local_flush_and_out
;
else
}
else
{
smp_cross_call_masked
(
&
xcall_flush_tlb_pending
,
/* This optimization is not valid. Normally
ctx
,
nr
,
(
unsigned
long
)
vaddrs
,
* we will be holding the page_table_lock, but
mm
->
cpu_vm_mask
);
* 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
);
local_flush_and_out:
__flush_tlb_pending
(
ctx
,
nr
,
vaddrs
);
__flush_tlb_pending
(
ctx
,
nr
,
vaddrs
);
put_cpu
();
put_cpu
();
...
...
arch/sparc64/kernel/sunos_ioctl32.c
View file @
d27ba47e
...
@@ -24,7 +24,6 @@
...
@@ -24,7 +24,6 @@
#include <linux/smp_lock.h>
#include <linux/smp_lock.h>
#include <linux/syscalls.h>
#include <linux/syscalls.h>
#include <linux/compat.h>
#include <linux/compat.h>
#include <asm/kbio.h>
#define SUNOS_NR_OPEN 256
#define SUNOS_NR_OPEN 256
...
...
arch/sparc64/kernel/time.c
View file @
d27ba47e
...
@@ -60,17 +60,6 @@ static void __iomem *mstk48t59_regs;
...
@@ -60,17 +60,6 @@ static void __iomem *mstk48t59_regs;
static
int
set_rtc_mmss
(
unsigned
long
);
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)
#define TICK_PRIV_BIT (1UL << 63)
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
...
@@ -200,6 +189,8 @@ static struct sparc64_tick_ops tick_operations __read_mostly = {
...
@@ -200,6 +189,8 @@ static struct sparc64_tick_ops tick_operations __read_mostly = {
.
softint_mask
=
1UL
<<
0
,
.
softint_mask
=
1UL
<<
0
,
};
};
struct
sparc64_tick_ops
*
tick_ops
__read_mostly
=
&
tick_operations
;
static
void
stick_init_tick
(
unsigned
long
offset
)
static
void
stick_init_tick
(
unsigned
long
offset
)
{
{
tick_disable_protection
();
tick_disable_protection
();
...
...
drivers/sbus/char/cpwatchdog.c
View file @
d27ba47e
...
@@ -26,6 +26,7 @@
...
@@ -26,6 +26,7 @@
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <linux/timer.h>
#include <linux/smp_lock.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/ebus.h>
#include <asm/ebus.h>
#include <asm/oplib.h>
#include <asm/oplib.h>
...
@@ -394,6 +395,28 @@ static int wd_ioctl(struct inode *inode, struct file *file,
...
@@ -394,6 +395,28 @@ static int wd_ioctl(struct inode *inode, struct file *file,
return
(
0
);
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
,
static
ssize_t
wd_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
const
char
__user
*
buf
,
size_t
count
,
size_t
count
,
...
@@ -441,6 +464,7 @@ static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -441,6 +464,7 @@ static irqreturn_t wd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
static
struct
file_operations
wd_fops
=
{
static
struct
file_operations
wd_fops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
ioctl
=
wd_ioctl
,
.
ioctl
=
wd_ioctl
,
.
compat_ioctl
=
wd_compat_ioctl
,
.
open
=
wd_open
,
.
open
=
wd_open
,
.
write
=
wd_write
,
.
write
=
wd_write
,
.
read
=
wd_read
,
.
read
=
wd_read
,
...
...
drivers/sbus/char/display7seg.c
View file @
d27ba47e
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/miscdevice.h>
#include <linux/ioport.h>
/* request_region */
#include <linux/ioport.h>
/* request_region */
#include <linux/smp_lock.h>
#include <asm/atomic.h>
#include <asm/atomic.h>
#include <asm/ebus.h>
/* EBus device */
#include <asm/ebus.h>
/* EBus device */
#include <asm/oplib.h>
/* OpenProm Library */
#include <asm/oplib.h>
/* OpenProm Library */
...
@@ -114,22 +115,25 @@ static int d7s_release(struct inode *inode, struct file *f)
...
@@ -114,22 +115,25 @@ static int d7s_release(struct inode *inode, struct file *f)
return
0
;
return
0
;
}
}
static
int
d7s_ioctl
(
struct
inode
*
inode
,
struct
file
*
f
,
static
long
d7s_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
unsigned
int
cmd
,
unsigned
long
arg
)
{
{
__u8
regs
=
readb
(
d7s_regs
);
__u8
regs
=
readb
(
d7s_regs
);
__u8
ireg
=
0
;
__u8
ireg
=
0
;
int
error
=
0
if
(
D7S_MINOR
!=
iminor
(
inode
))
if
(
D7S_MINOR
!=
iminor
(
file
->
f_dentry
->
d_
inode
))
return
-
ENODEV
;
return
-
ENODEV
;
lock_kernel
();
switch
(
cmd
)
{
switch
(
cmd
)
{
case
D7SIOCWR
:
case
D7SIOCWR
:
/* assign device register values
/* assign device register values
* we mask-out D7S_FLIP if in sol_compat mode
* we mask-out D7S_FLIP if in sol_compat mode
*/
*/
if
(
get_user
(
ireg
,
(
int
__user
*
)
arg
))
if
(
get_user
(
ireg
,
(
int
__user
*
)
arg
))
{
return
-
EFAULT
;
error
=
-
EFAULT
;
break
;
}
if
(
0
!=
sol_compat
)
{
if
(
0
!=
sol_compat
)
{
(
regs
&
D7S_FLIP
)
?
(
regs
&
D7S_FLIP
)
?
(
ireg
|=
D7S_FLIP
)
:
(
ireg
&=
~
D7S_FLIP
);
(
ireg
|=
D7S_FLIP
)
:
(
ireg
&=
~
D7S_FLIP
);
...
@@ -144,8 +148,10 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
...
@@ -144,8 +148,10 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
* This driver will not misinform you about the state
* This driver will not misinform you about the state
* of your hardware while in sol_compat mode
* of your hardware while in sol_compat mode
*/
*/
if
(
put_user
(
regs
,
(
int
__user
*
)
arg
))
if
(
put_user
(
regs
,
(
int
__user
*
)
arg
))
{
return
-
EFAULT
;
error
=
-
EFAULT
;
break
;
}
break
;
break
;
case
D7SIOCTM
:
case
D7SIOCTM
:
...
@@ -155,15 +161,17 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
...
@@ -155,15 +161,17 @@ static int d7s_ioctl(struct inode *inode, struct file *f,
writeb
(
regs
,
d7s_regs
);
writeb
(
regs
,
d7s_regs
);
break
;
break
;
};
};
lock_kernel
();
return
0
;
return
error
;
}
}
static
struct
file_operations
d7s_fops
=
{
static
struct
file_operations
d7s_fops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
ioctl
=
d7s_ioctl
,
.
unlocked_ioctl
=
d7s_ioctl
,
.
open
=
d7s_open
,
.
compat_ioctl
=
d7s_ioctl
,
.
release
=
d7s_release
,
.
open
=
d7s_open
,
.
release
=
d7s_release
,
};
};
static
struct
miscdevice
d7s_miscdev
=
{
D7S_MINOR
,
D7S_DEVNAME
,
&
d7s_fops
};
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)
...
@@ -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().
/* Function Description: Command what to read. Mapped to user ioctl().
* Return: Gives 0 for implemented commands, -EINVAL otherwise.
* Return: Gives 0 for implemented commands, -EINVAL otherwise.
*/
*/
static
int
static
long
envctrl_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
envctrl_ioctl
(
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
unsigned
int
cmd
,
unsigned
long
arg
)
{
{
char
__user
*
infobuf
;
char
__user
*
infobuf
;
...
@@ -715,11 +714,14 @@ envctrl_release(struct inode *inode, struct file *file)
...
@@ -715,11 +714,14 @@ envctrl_release(struct inode *inode, struct file *file)
}
}
static
struct
file_operations
envctrl_fops
=
{
static
struct
file_operations
envctrl_fops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
read
=
envctrl_read
,
.
read
=
envctrl_read
,
.
ioctl
=
envctrl_ioctl
,
.
unlocked_ioctl
=
envctrl_ioctl
,
.
open
=
envctrl_open
,
#ifdef CONFIG_COMPAT
.
release
=
envctrl_release
,
.
compat_ioctl
=
envctrl_ioctl
,
#endif
.
open
=
envctrl_open
,
.
release
=
envctrl_release
,
};
};
static
struct
miscdevice
envctrl_dev
=
{
static
struct
miscdevice
envctrl_dev
=
{
...
...
drivers/sbus/char/openprom.c
View file @
d27ba47e
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/string.h>
#include <linux/miscdevice.h>
#include <linux/miscdevice.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/fs.h>
#include <asm/oplib.h>
#include <asm/oplib.h>
...
@@ -565,6 +566,38 @@ static int openprom_ioctl(struct inode * inode, struct file * file,
...
@@ -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
)
static
int
openprom_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
DATA
*
data
;
DATA
*
data
;
...
...
drivers/serial/sunsu.c
View file @
d27ba47e
...
@@ -1441,7 +1441,7 @@ static void sunsu_console_write(struct console *co, const char *s,
...
@@ -1441,7 +1441,7 @@ static void sunsu_console_write(struct console *co, const char *s,
* - initialize the serial port
* - initialize the serial port
* Return non-zero if we didn't find a 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
;
struct
uart_port
*
port
;
int
baud
=
9600
;
int
baud
=
9600
;
...
...
drivers/video/cg6.c
View file @
d27ba47e
...
@@ -653,12 +653,6 @@ static void cg6_chip_init(struct fb_info *info)
...
@@ -653,12 +653,6 @@ static void cg6_chip_init(struct fb_info *info)
sbus_writel
(
0
,
&
fbc
->
clipminy
);
sbus_writel
(
0
,
&
fbc
->
clipminy
);
sbus_writel
(
info
->
var
.
xres
-
1
,
&
fbc
->
clipmaxx
);
sbus_writel
(
info
->
var
.
xres
-
1
,
&
fbc
->
clipmaxx
);
sbus_writel
(
info
->
var
.
yres
-
1
,
&
fbc
->
clipmaxy
);
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
{
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 {
...
@@ -38,15 +38,6 @@ struct sunos_ttysize {
int
st_columns
;
/* Columns on the terminal */
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
{
struct
winsize
{
unsigned
short
ws_row
;
unsigned
short
ws_row
;
unsigned
short
ws_col
;
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,
...
@@ -79,6 +79,7 @@ extern int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr,
size_t
len
);
size_t
len
);
extern
void
ebus_dma_prepare
(
struct
ebus_dma_info
*
p
,
int
write
);
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_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
void
ebus_dma_enable
(
struct
ebus_dma_info
*
p
,
int
on
);
extern
struct
linux_ebus
*
ebus_chain
;
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);
...
@@ -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
)
static
inline
void
switch_mm
(
struct
mm_struct
*
old_mm
,
struct
mm_struct
*
mm
,
struct
task_struct
*
tsk
)
{
{
unsigned
long
ctx_valid
;
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
);
spin_lock
(
&
mm
->
page_table_lock
);
if
(
CTX_VALID
(
mm
->
context
))
ctx_valid
=
CTX_VALID
(
mm
->
context
);
ctx_valid
=
1
;
if
(
!
ctx_valid
)
else
get_new_mmu_context
(
mm
);
ctx_valid
=
0
;
spin_unlock
(
&
mm
->
page_table_lock
)
;
if
(
!
ctx_valid
||
(
old_mm
!=
mm
))
{
if
(
!
ctx_valid
||
(
old_mm
!=
mm
))
{
if
(
!
ctx_valid
)
get_new_mmu_context
(
mm
);
load_secondary_context
(
mm
);
load_secondary_context
(
mm
);
reload_tlbmiss_state
(
tsk
,
mm
);
reload_tlbmiss_state
(
tsk
,
mm
);
}
}
{
/* Even if (mm == old_mm) we _must_ check
int
cpu
=
smp_processor_id
();
* the cpu_vm_mask. If we do not we could
* corrupt the TLB state because of how
/* Even if (mm == old_mm) we _must_ check
* smp_flush_tlb_{page,range,mm} on sparc64
* the cpu_vm_mask. If we do not we could
* and lazy tlb switches work. -DaveM
* corrupt the TLB state because of how
*/
* smp_flush_tlb_{page,range,mm} on sparc64
cpu
=
smp_processor_id
();
* and lazy tlb switches work. -DaveM
if
(
!
ctx_valid
||
!
cpu_isset
(
cpu
,
mm
->
cpu_vm_mask
))
{
*/
cpu_set
(
cpu
,
mm
->
cpu_vm_mask
);
if
(
!
ctx_valid
||
!
cpu_isset
(
cpu
,
mm
->
cpu_vm_mask
))
{
__flush_tlb_mm
(
CTX_HWBITS
(
mm
->
context
),
cpu_set
(
cpu
,
mm
->
cpu_vm_mask
);
SECONDARY_CONTEXT
);
__flush_tlb_mm
(
CTX_HWBITS
(
mm
->
context
),
SECONDARY_CONTEXT
);
}
}
}
spin_unlock
(
&
mm
->
page_table_lock
);
}
}
#define deactivate_mm(tsk,mm) do { } while (0)
#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
...
@@ -127,6 +125,10 @@ static inline void activate_mm(struct mm_struct *active_mm, struct mm_struct *mm
{
{
int
cpu
;
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
);
spin_lock
(
&
mm
->
page_table_lock
);
if
(
!
CTX_VALID
(
mm
->
context
))
if
(
!
CTX_VALID
(
mm
->
context
))
get_new_mmu_context
(
mm
);
get_new_mmu_context
(
mm
);
...
...
include/asm-sparc64/termios.h
View file @
d27ba47e
...
@@ -38,15 +38,6 @@ struct sunos_ttysize {
...
@@ -38,15 +38,6 @@ struct sunos_ttysize {
int
st_columns
;
/* Columns on the terminal */
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
{
struct
winsize
{
unsigned
short
ws_row
;
unsigned
short
ws_row
;
unsigned
short
ws_col
;
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
...
@@ -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
)
static
inline
void
tlb_flush_mmu
(
struct
mmu_gather
*
mp
)
{
{
if
(
mp
->
need_flush
)
{
if
(
mp
->
need_flush
)
{
free_pages_and_swap_cache
(
mp
->
pages
,
mp
->
pages_nr
);
mp
->
pages_nr
=
0
;
mp
->
need_flush
=
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
...
@@ -78,11 +76,9 @@ static inline void tlb_finish_mmu(struct mmu_gather *mp, unsigned long start, un
{
{
tlb_flush_mmu
(
mp
);
tlb_flush_mmu
(
mp
);
if
(
mp
->
fullmm
)
{
if
(
mp
->
fullmm
)
if
(
CTX_VALID
(
mp
->
mm
->
context
))
do_flush_tlb_mm
(
mp
->
mm
);
mp
->
fullmm
=
0
;
mp
->
fullmm
=
0
;
}
else
else
flush_tlb_pending
();
flush_tlb_pending
();
/* keep the page table cache within bounds */
/* 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
...
@@ -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
)
static
inline
void
tlb_remove_page
(
struct
mmu_gather
*
mp
,
struct
page
*
page
)
{
{
mp
->
need_flush
=
1
;
if
(
tlb_fast_mode
(
mp
))
{
if
(
tlb_fast_mode
(
mp
))
{
free_page_and_swap_cache
(
page
);
free_page_and_swap_cache
(
page
);
return
;
return
;
}
}
mp
->
need_flush
=
1
;
mp
->
pages
[
mp
->
pages_nr
++
]
=
page
;
mp
->
pages
[
mp
->
pages_nr
++
]
=
page
;
if
(
mp
->
pages_nr
>=
FREE_PTE_NR
)
if
(
mp
->
pages_nr
>=
FREE_PTE_NR
)
tlb_flush_mmu
(
mp
);
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)
...
@@ -470,13 +470,6 @@ static int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
if
(
clone_flags
&
CLONE_VM
)
{
if
(
clone_flags
&
CLONE_VM
)
{
atomic_inc
(
&
oldmm
->
mm_users
);
atomic_inc
(
&
oldmm
->
mm_users
);
mm
=
oldmm
;
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
;
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