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
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