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
8b87e1ba
Commit
8b87e1ba
authored
Jan 12, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-serial
parents
a2b421fe
f392ecfa
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
36 additions
and
35 deletions
+36
-35
drivers/serial/8250.c
drivers/serial/8250.c
+6
-5
drivers/serial/crisv10.c
drivers/serial/crisv10.c
+4
-7
drivers/serial/pmac_zilog.c
drivers/serial/pmac_zilog.c
+12
-11
drivers/serial/serial_core.c
drivers/serial/serial_core.c
+8
-7
drivers/serial/serial_txx9.c
drivers/serial/serial_txx9.c
+6
-5
No files found.
drivers/serial/8250.c
View file @
8b87e1ba
...
...
@@ -41,6 +41,7 @@
#include <linux/serial.h>
#include <linux/serial_8250.h>
#include <linux/nmi.h>
#include <linux/mutex.h>
#include <asm/io.h>
#include <asm/irq.h>
...
...
@@ -2467,7 +2468,7 @@ static struct platform_device *serial8250_isa_devs;
* 16x50 serial ports to be configured at run-time, to support PCMCIA
* modems and PCI multiport cards.
*/
static
DE
CLARE_MUTEX
(
serial_sem
);
static
DE
FINE_MUTEX
(
serial_mutex
);
static
struct
uart_8250_port
*
serial8250_find_match_or_unused
(
struct
uart_port
*
port
)
{
...
...
@@ -2522,7 +2523,7 @@ int serial8250_register_port(struct uart_port *port)
if
(
port
->
uartclk
==
0
)
return
-
EINVAL
;
down
(
&
serial_sem
);
mutex_lock
(
&
serial_mutex
);
uart
=
serial8250_find_match_or_unused
(
port
);
if
(
uart
)
{
...
...
@@ -2544,7 +2545,7 @@ int serial8250_register_port(struct uart_port *port)
if
(
ret
==
0
)
ret
=
uart
->
port
.
line
;
}
up
(
&
serial_sem
);
mutex_unlock
(
&
serial_mutex
);
return
ret
;
}
...
...
@@ -2561,7 +2562,7 @@ void serial8250_unregister_port(int line)
{
struct
uart_8250_port
*
uart
=
&
serial8250_ports
[
line
];
down
(
&
serial_sem
);
mutex_lock
(
&
serial_mutex
);
uart_remove_one_port
(
&
serial8250_reg
,
&
uart
->
port
);
if
(
serial8250_isa_devs
)
{
uart
->
port
.
flags
&=
~
UPF_BOOT_AUTOCONF
;
...
...
@@ -2571,7 +2572,7 @@ void serial8250_unregister_port(int line)
}
else
{
uart
->
port
.
dev
=
NULL
;
}
up
(
&
serial_sem
);
mutex_unlock
(
&
serial_mutex
);
}
EXPORT_SYMBOL
(
serial8250_unregister_port
);
...
...
drivers/serial/crisv10.c
View file @
8b87e1ba
...
...
@@ -442,6 +442,7 @@ static char *serial_version = "$Revision: 1.25 $";
#include <linux/init.h>
#include <asm/uaccess.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
#include <asm/io.h>
#include <asm/irq.h>
...
...
@@ -1315,11 +1316,7 @@ static const struct control_pins e100_modem_pins[NR_PORTS] =
* memory if large numbers of serial ports are open.
*/
static
unsigned
char
*
tmp_buf
;
#ifdef DECLARE_MUTEX
static
DECLARE_MUTEX
(
tmp_buf_sem
);
#else
static
struct
semaphore
tmp_buf_sem
=
MUTEX
;
#endif
static
DEFINE_MUTEX
(
tmp_buf_mutex
);
/* Calculate the chartime depending on baudrate, numbor of bits etc. */
static
void
update_char_time
(
struct
e100_serial
*
info
)
...
...
@@ -3661,7 +3658,7 @@ rs_raw_write(struct tty_struct * tty, int from_user,
* design.
*/
if
(
from_user
)
{
down
(
&
tmp_buf_sem
);
mutex_lock
(
&
tmp_buf_mutex
);
while
(
1
)
{
int
c1
;
c
=
CIRC_SPACE_TO_END
(
info
->
xmit
.
head
,
...
...
@@ -3692,7 +3689,7 @@ rs_raw_write(struct tty_struct * tty, int from_user,
count
-=
c
;
ret
+=
c
;
}
up
(
&
tmp_buf_sem
);
mutex_unlock
(
&
tmp_buf_mutex
);
}
else
{
cli
();
while
(
count
)
{
...
...
drivers/serial/pmac_zilog.c
View file @
8b87e1ba
...
...
@@ -60,6 +60,7 @@
#include <linux/pmu.h>
#include <linux/bitops.h>
#include <linux/sysrq.h>
#include <linux/mutex.h>
#include <asm/sections.h>
#include <asm/io.h>
#include <asm/irq.h>
...
...
@@ -96,7 +97,7 @@ MODULE_LICENSE("GPL");
*/
static
struct
uart_pmac_port
pmz_ports
[
MAX_ZS_PORTS
];
static
int
pmz_ports_count
;
static
DE
CLARE_MUTEX
(
pmz_irq_sem
);
static
DE
FINE_MUTEX
(
pmz_irq_mutex
);
static
struct
uart_driver
pmz_uart_reg
=
{
.
owner
=
THIS_MODULE
,
...
...
@@ -922,7 +923,7 @@ static int pmz_startup(struct uart_port *port)
if
(
uap
->
node
==
NULL
)
return
-
ENODEV
;
down
(
&
pmz_irq_sem
);
mutex_lock
(
&
pmz_irq_mutex
);
uap
->
flags
|=
PMACZILOG_FLAG_IS_OPEN
;
...
...
@@ -940,11 +941,11 @@ static int pmz_startup(struct uart_port *port)
dev_err
(
&
uap
->
dev
->
ofdev
.
dev
,
"Unable to register zs interrupt handler.
\n
"
);
pmz_set_scc_power
(
uap
,
0
);
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
return
-
ENXIO
;
}
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
/* Right now, we deal with delay by blocking here, I'll be
* smarter later on
...
...
@@ -981,7 +982,7 @@ static void pmz_shutdown(struct uart_port *port)
if
(
uap
->
node
==
NULL
)
return
;
down
(
&
pmz_irq_sem
);
mutex_lock
(
&
pmz_irq_mutex
);
/* Release interrupt handler */
free_irq
(
uap
->
port
.
irq
,
uap
);
...
...
@@ -1002,7 +1003,7 @@ static void pmz_shutdown(struct uart_port *port)
if
(
ZS_IS_CONS
(
uap
)
||
ZS_IS_ASLEEP
(
uap
))
{
spin_unlock_irqrestore
(
&
port
->
lock
,
flags
);
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
return
;
}
...
...
@@ -1019,7 +1020,7 @@ static void pmz_shutdown(struct uart_port *port)
spin_unlock_irqrestore
(
&
port
->
lock
,
flags
);
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
pmz_debug
(
"pmz: shutdown() done.
\n
"
);
}
...
...
@@ -1591,7 +1592,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state)
state
=
pmz_uart_reg
.
state
+
uap
->
port
.
line
;
down
(
&
pmz_irq_sem
);
mutex_lock
(
&
pmz_irq_mutex
);
down
(
&
state
->
sem
);
spin_lock_irqsave
(
&
uap
->
port
.
lock
,
flags
);
...
...
@@ -1624,7 +1625,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state)
pmz_set_scc_power
(
uap
,
0
);
up
(
&
state
->
sem
);
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
pmz_debug
(
"suspend, switching complete
\n
"
);
...
...
@@ -1651,7 +1652,7 @@ static int pmz_resume(struct macio_dev *mdev)
state
=
pmz_uart_reg
.
state
+
uap
->
port
.
line
;
down
(
&
pmz_irq_sem
);
mutex_lock
(
&
pmz_irq_mutex
);
down
(
&
state
->
sem
);
spin_lock_irqsave
(
&
uap
->
port
.
lock
,
flags
);
...
...
@@ -1685,7 +1686,7 @@ static int pmz_resume(struct macio_dev *mdev)
bail:
up
(
&
state
->
sem
);
up
(
&
pmz_irq_sem
);
mutex_unlock
(
&
pmz_irq_mutex
);
/* Right now, we deal with delay by blocking here, I'll be
* smarter later on
...
...
drivers/serial/serial_core.c
View file @
8b87e1ba
...
...
@@ -33,6 +33,7 @@
#include <linux/device.h>
#include <linux/serial.h>
/* for serial_state and serial_icounter_struct */
#include <linux/delay.h>
#include <linux/mutex.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
...
...
@@ -47,7 +48,7 @@
/*
* This is used to lock changes in serial line configuration.
*/
static
DE
CLARE_MUTEX
(
port_sem
);
static
DE
FINE_MUTEX
(
port_mutex
);
#define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8)
...
...
@@ -1472,7 +1473,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line)
{
struct
uart_state
*
state
;
down
(
&
port_sem
);
mutex_lock
(
&
port_mutex
);
state
=
drv
->
state
+
line
;
if
(
down_interruptible
(
&
state
->
sem
))
{
state
=
ERR_PTR
(
-
ERESTARTSYS
);
...
...
@@ -1509,7 +1510,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line)
}
out:
up
(
&
port_sem
);
mutex_unlock
(
&
port_mutex
);
return
state
;
}
...
...
@@ -2219,7 +2220,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
state
=
drv
->
state
+
port
->
line
;
down
(
&
port_sem
);
mutex_lock
(
&
port_mutex
);
if
(
state
->
port
)
{
ret
=
-
EINVAL
;
goto
out
;
...
...
@@ -2255,7 +2256,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port)
register_console
(
port
->
cons
);
out:
up
(
&
port_sem
);
mutex_unlock
(
&
port_mutex
);
return
ret
;
}
...
...
@@ -2279,7 +2280,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port)
printk
(
KERN_ALERT
"Removing wrong port: %p != %p
\n
"
,
state
->
port
,
port
);
down
(
&
port_sem
);
mutex_lock
(
&
port_mutex
);
/*
* Remove the devices from devfs
...
...
@@ -2288,7 +2289,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port)
uart_unconfigure_port
(
drv
,
state
);
state
->
port
=
NULL
;
up
(
&
port_sem
);
mutex_unlock
(
&
port_mutex
);
return
0
;
}
...
...
drivers/serial/serial_txx9.c
View file @
8b87e1ba
...
...
@@ -52,6 +52,7 @@
#include <linux/tty_flip.h>
#include <linux/serial_core.h>
#include <linux/serial.h>
#include <linux/mutex.h>
#include <asm/io.h>
#include <asm/irq.h>
...
...
@@ -1018,7 +1019,7 @@ static void serial_txx9_resume_port(int line)
uart_resume_port
(
&
serial_txx9_reg
,
&
serial_txx9_ports
[
line
].
port
);
}
static
DE
CLARE_MUTEX
(
serial_txx9_sem
);
static
DE
FINE_MUTEX
(
serial_txx9_mutex
);
/**
* serial_txx9_register_port - register a serial port
...
...
@@ -1037,7 +1038,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port)
struct
uart_txx9_port
*
uart
;
int
ret
=
-
ENOSPC
;
down
(
&
serial_txx9_sem
);
mutex_lock
(
&
serial_txx9_mutex
);
for
(
i
=
0
;
i
<
UART_NR
;
i
++
)
{
uart
=
&
serial_txx9_ports
[
i
];
if
(
uart
->
port
.
type
==
PORT_UNKNOWN
)
...
...
@@ -1058,7 +1059,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port)
if
(
ret
==
0
)
ret
=
uart
->
port
.
line
;
}
up
(
&
serial_txx9_sem
);
mutex_unlock
(
&
serial_txx9_mutex
);
return
ret
;
}
...
...
@@ -1073,7 +1074,7 @@ static void __devexit serial_txx9_unregister_port(int line)
{
struct
uart_txx9_port
*
uart
=
&
serial_txx9_ports
[
line
];
down
(
&
serial_txx9_sem
);
mutex_lock
(
&
serial_txx9_mutex
);
uart_remove_one_port
(
&
serial_txx9_reg
,
&
uart
->
port
);
uart
->
port
.
flags
=
0
;
uart
->
port
.
type
=
PORT_UNKNOWN
;
...
...
@@ -1082,7 +1083,7 @@ static void __devexit serial_txx9_unregister_port(int line)
uart
->
port
.
membase
=
0
;
uart
->
port
.
dev
=
NULL
;
uart_add_one_port
(
&
serial_txx9_reg
,
&
uart
->
port
);
up
(
&
serial_txx9_sem
);
mutex_unlock
(
&
serial_txx9_mutex
);
}
/*
...
...
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