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
77ad1af8
Commit
77ad1af8
authored
Apr 19, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk/linux-2.5-serial
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
e4a874f0
3bbb0896
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
117 additions
and
73 deletions
+117
-73
drivers/char/tty_io.c
drivers/char/tty_io.c
+57
-0
drivers/net/irda/irtty-sir.c
drivers/net/irda/irtty-sir.c
+14
-17
drivers/serial/68328serial.c
drivers/serial/68328serial.c
+2
-1
drivers/serial/8250_pci.c
drivers/serial/8250_pci.c
+0
-7
drivers/serial/amba.c
drivers/serial/amba.c
+2
-1
drivers/serial/anakin.c
drivers/serial/anakin.c
+2
-2
drivers/serial/clps711x.c
drivers/serial/clps711x.c
+2
-1
drivers/serial/core.c
drivers/serial/core.c
+29
-41
drivers/serial/mcfserial.c
drivers/serial/mcfserial.c
+2
-1
drivers/serial/sa1100.c
drivers/serial/sa1100.c
+2
-1
drivers/serial/uart00.c
drivers/serial/uart00.c
+2
-1
include/linux/tty_driver.h
include/linux/tty_driver.h
+3
-0
No files found.
drivers/char/tty_io.c
View file @
77ad1af8
...
...
@@ -1683,6 +1683,55 @@ static int send_break(struct tty_struct *tty, int duration)
return
0
;
}
static
int
tty_tiocmget
(
struct
tty_struct
*
tty
,
struct
file
*
file
,
unsigned
long
arg
)
{
int
retval
=
-
EINVAL
;
if
(
tty
->
driver
.
tiocmget
)
{
retval
=
tty
->
driver
.
tiocmget
(
tty
,
file
);
if
(
retval
>=
0
)
retval
=
put_user
(
retval
,
(
int
*
)
arg
);
}
return
retval
;
}
static
int
tty_tiocmset
(
struct
tty_struct
*
tty
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
int
retval
=
-
EINVAL
;
if
(
tty
->
driver
.
tiocmset
)
{
unsigned
int
set
,
clear
,
val
;
retval
=
get_user
(
val
,
(
unsigned
int
*
)
arg
);
if
(
retval
)
return
retval
;
set
=
clear
=
0
;
switch
(
cmd
)
{
case
TIOCMBIS
:
set
=
val
;
break
;
case
TIOCMBIC
:
clear
=
val
;
break
;
case
TIOCMSET
:
set
=
val
;
clear
=
~
val
;
break
;
}
set
&=
TIOCM_DTR
|
TIOCM_RTS
|
TIOCM_OUT1
|
TIOCM_OUT2
;
clear
&=
TIOCM_DTR
|
TIOCM_RTS
|
TIOCM_OUT1
|
TIOCM_OUT2
;
retval
=
tty
->
driver
.
tiocmset
(
tty
,
file
,
set
,
clear
);
}
return
retval
;
}
/*
* Split this up, as gcc can choke on it otherwise..
*/
...
...
@@ -1808,6 +1857,14 @@ int tty_ioctl(struct inode * inode, struct file * file,
return
0
;
case
TCSBRKP
:
/* support for POSIX tcsendbreak() */
return
send_break
(
tty
,
arg
?
arg
*
(
HZ
/
10
)
:
HZ
/
4
);
case
TIOCMGET
:
return
tty_tiocmget
(
tty
,
file
,
arg
);
case
TIOCMSET
:
case
TIOCMBIC
:
case
TIOCMBIS
:
return
tty_tiocmset
(
tty
,
file
,
cmd
,
arg
);
}
if
(
tty
->
driver
.
ioctl
)
{
int
retval
=
(
tty
->
driver
.
ioctl
)(
tty
,
file
,
cmd
,
arg
);
...
...
drivers/net/irda/irtty-sir.c
View file @
77ad1af8
...
...
@@ -180,32 +180,29 @@ static int irtty_change_speed(struct sir_dev *dev, unsigned speed)
static
int
irtty_set_dtr_rts
(
struct
sir_dev
*
dev
,
int
dtr
,
int
rts
)
{
struct
sirtty_cb
*
priv
=
dev
->
priv
;
int
arg
=
0
;
int
set
=
0
;
int
clear
=
0
;
ASSERT
(
priv
!=
NULL
,
return
-
1
;);
ASSERT
(
priv
->
magic
==
IRTTY_MAGIC
,
return
-
1
;);
#ifdef TIOCM_OUT2
/* Not defined for ARM */
arg
=
TIOCM_OUT2
;
#endif
if
(
rts
)
arg
|=
TIOCM_RTS
;
set
|=
TIOCM_RTS
;
else
clear
|=
TIOCM_RTS
;
if
(
dtr
)
arg
|=
TIOCM_DTR
;
set
|=
TIOCM_DTR
;
else
clear
|=
TIOCM_DTR
;
/*
* The ioctl() function, or actually set_modem_info() in serial.c
* expects a pointer to the argument in user space. This is working
* here because we are always called from the kIrDAd thread which
* has set_fs(KERNEL_DS) permanently set. Therefore copy_from_user()
* is happy with our arg-parameter being local here in kernel space.
* We can't use ioctl() because it expects a non-null file structure,
* and we don't have that here.
* This function is not yet defined for all tty driver, so
* let's be careful... Jean II
*/
lock_kernel
();
if
(
priv
->
tty
->
driver
.
ioctl
(
priv
->
tty
,
NULL
,
TIOCMSET
,
(
unsigned
long
)
&
arg
))
{
IRDA_DEBUG
(
2
,
"%s(), error doing ioctl!
\n
"
,
__FUNCTION__
);
}
unlock_kernel
();
ASSERT
(
priv
->
tty
->
driver
.
tiocmset
!=
NULL
,
return
-
1
;);
priv
->
tty
->
driver
.
tiocmset
(
priv
->
tty
,
NULL
,
set
,
clear
);
return
0
;
}
...
...
drivers/serial/68328serial.c
View file @
77ad1af8
...
...
@@ -1691,9 +1691,10 @@ static struct console m68328_driver = {
};
static
void
__init
m68328_console_init
(
void
)
static
int
__init
m68328_console_init
(
void
)
{
register_console
(
&
m68328_driver
);
return
0
;
}
console_initcall
(
m68328_console_init
);
drivers/serial/8250_pci.c
View file @
77ad1af8
...
...
@@ -1808,13 +1808,6 @@ static struct pci_device_id serial_pci_tbl[] __devinitdata = {
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
pbn_b1_1_115200
},
/*
* 3Com US Robotics 56k Voice Internal PCI model 5610
*/
{
PCI_VENDOR_ID_USR
,
0x1008
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
pbn_b0_1_115200
},
/*
* Titan Electronic cards
* The 400L and 800L have a custom setup quirk.
...
...
drivers/serial/amba.c
View file @
77ad1af8
...
...
@@ -705,9 +705,10 @@ static struct console amba_console = {
.
index
=
-
1
,
};
static
void
__init
ambauart_console_init
(
void
)
static
int
__init
ambauart_console_init
(
void
)
{
register_console
(
&
amba_console
);
return
0
;
}
console_initcall
(
ambauart_console_init
);
...
...
drivers/serial/anakin.c
View file @
77ad1af8
...
...
@@ -502,10 +502,10 @@ static struct console anakin_console = {
.
index
=
-
1
,
};
static
void
__init
anakin_console_init
(
void
)
static
int
__init
anakin_console_init
(
void
)
{
register_console
(
&
anakin_console
);
return
0
;
}
console_initcall
(
anakin_console_init
);
...
...
drivers/serial/clps711x.c
View file @
77ad1af8
...
...
@@ -567,9 +567,10 @@ static struct console clps711x_console = {
.
index
=
-
1
,
};
static
void
__init
clps711xuart_console_init
(
void
)
static
int
__init
clps711xuart_console_init
(
void
)
{
register_console
(
&
clps711x_console
);
return
0
;
}
console_initcall
(
clps711xuart_console_init
);
...
...
drivers/serial/core.c
View file @
77ad1af8
...
...
@@ -873,45 +873,38 @@ static int uart_get_lsr_info(struct uart_state *state, unsigned int *value)
return
put_user
(
result
,
value
);
}
static
int
uart_
get_modem_info
(
struct
uart_port
*
port
,
unsigned
int
*
valu
e
)
static
int
uart_
tiocmget
(
struct
tty_struct
*
tty
,
struct
file
*
fil
e
)
{
unsigned
int
result
=
port
->
mctrl
;
struct
uart_state
*
state
=
tty
->
driver_data
;
struct
uart_port
*
port
=
state
->
port
;
int
result
=
-
EIO
;
result
|=
port
->
ops
->
get_mctrl
(
port
);
down
(
&
state
->
sem
);
if
((
!
file
||
!
tty_hung_up_p
(
file
))
&&
!
(
tty
->
flags
&
(
1
<<
TTY_IO_ERROR
)))
{
result
=
port
->
mctrl
;
result
|=
port
->
ops
->
get_mctrl
(
port
);
}
up
(
&
state
->
sem
);
return
put_user
(
result
,
value
)
;
return
result
;
}
static
int
uart_
set_modem_info
(
struct
uart_port
*
port
,
unsigned
int
cmd
,
unsigned
int
*
value
)
uart_
tiocmset
(
struct
tty_struct
*
tty
,
struct
file
*
file
,
unsigned
int
set
,
unsigned
int
clear
)
{
unsigned
int
arg
,
set
,
clear
;
int
ret
=
0
;
if
(
get_user
(
arg
,
value
))
return
-
EFAULT
;
arg
&=
TIOCM_DTR
|
TIOCM_RTS
|
TIOCM_OUT1
|
TIOCM_OUT2
;
struct
uart_state
*
state
=
tty
->
driver_data
;
struct
uart_port
*
port
=
state
->
port
;
int
ret
=
-
EIO
;
set
=
clear
=
0
;
switch
(
cmd
)
{
case
TIOCMBIS
:
set
=
arg
;
break
;
case
TIOCMBIC
:
clear
=
arg
;
break
;
case
TIOCMSET
:
set
=
arg
;
clear
=
~
arg
;
break
;
default:
ret
=
-
EINVAL
;
break
;
}
if
(
ret
==
0
)
down
(
&
state
->
sem
);
if
((
!
file
||
!
tty_hung_up_p
(
file
))
&&
!
(
tty
->
flags
&
(
1
<<
TTY_IO_ERROR
)))
{
uart_update_mctrl
(
port
,
set
,
clear
);
ret
=
0
;
}
up
(
&
state
->
sem
);
return
ret
;
}
...
...
@@ -922,8 +915,12 @@ static void uart_break_ctl(struct tty_struct *tty, int break_state)
BUG_ON
(
!
kernel_locked
());
down
(
&
state
->
sem
);
if
(
port
->
type
!=
PORT_UNKNOWN
)
port
->
ops
->
break_ctl
(
port
,
break_state
);
up
(
&
state
->
sem
);
}
static
int
uart_do_autoconfig
(
struct
uart_state
*
state
)
...
...
@@ -1130,17 +1127,6 @@ uart_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd,
* protected against the tty being hung up.
*/
switch
(
cmd
)
{
case
TIOCMGET
:
ret
=
uart_get_modem_info
(
state
->
port
,
(
unsigned
int
*
)
arg
);
break
;
case
TIOCMBIS
:
case
TIOCMBIC
:
case
TIOCMSET
:
ret
=
uart_set_modem_info
(
state
->
port
,
cmd
,
(
unsigned
int
*
)
arg
);
break
;
case
TIOCSERGETLSR
:
/* Get line status register */
ret
=
uart_get_lsr_info
(
state
,
(
unsigned
int
*
)
arg
);
break
;
...
...
@@ -2162,6 +2148,8 @@ int uart_register_driver(struct uart_driver *drv)
#ifdef CONFIG_PROC_FS
normal
->
read_proc
=
uart_read_proc
;
#endif
normal
->
tiocmget
=
uart_tiocmget
;
normal
->
tiocmset
=
uart_tiocmset
;
/*
* Initialise the UART state(s).
...
...
drivers/serial/mcfserial.c
View file @
77ad1af8
...
...
@@ -1853,9 +1853,10 @@ struct console mcfrs_console = {
.
index
=
-
1
,
};
static
void
__init
mcfrs_console_init
(
void
)
static
int
__init
mcfrs_console_init
(
void
)
{
register_console
(
&
mcfrs_console
);
return
0
;
}
console_initcall
(
mcfrs_console_init
);
...
...
drivers/serial/sa1100.c
View file @
77ad1af8
...
...
@@ -836,10 +836,11 @@ static struct console sa1100_console = {
.
index
=
-
1
,
};
static
void
__init
sa1100_rs_console_init
(
void
)
static
int
__init
sa1100_rs_console_init
(
void
)
{
sa1100_init_ports
();
register_console
(
&
sa1100_console
);
return
0
;
}
console_initcall
(
sa1100_rs_console_init
);
...
...
drivers/serial/uart00.c
View file @
77ad1af8
...
...
@@ -645,9 +645,10 @@ static struct console uart00_console = {
.
index
=
0
,
};
static
void
__init
uart00_console_init
(
void
)
static
int
__init
uart00_console_init
(
void
)
{
register_console
(
&
uart00_console
);
return
0
;
}
console_initcall
(
uart00_console_init
);
...
...
include/linux/tty_driver.h
View file @
77ad1af8
...
...
@@ -172,6 +172,9 @@ struct tty_driver {
int
count
,
int
*
eof
,
void
*
data
);
int
(
*
write_proc
)(
struct
file
*
file
,
const
char
*
buffer
,
unsigned
long
count
,
void
*
data
);
int
(
*
tiocmget
)(
struct
tty_struct
*
tty
,
struct
file
*
file
);
int
(
*
tiocmset
)(
struct
tty_struct
*
tty
,
struct
file
*
file
,
unsigned
int
set
,
unsigned
int
clear
);
struct
list_head
tty_drivers
;
};
...
...
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