git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
drivers
/
serial
/
8250.c
diff --git
a/drivers/serial/8250.c
b/drivers/serial/8250.c
index
9685977
..
fd8b94e
100644
(file)
--- a/
drivers/serial/8250.c
+++ b/
drivers/serial/8250.c
@@
-22,7
+22,6
@@
* mapbase is the physical address of the IO port.
* membase is an 'ioremapped' cookie.
*/
* mapbase is the physical address of the IO port.
* membase is an 'ioremapped' cookie.
*/
-#include <linux/config.h>
#if defined(CONFIG_SERIAL_8250_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#if defined(CONFIG_SERIAL_8250_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
@@
-52,7
+51,7
@@
/*
* Configuration:
/*
* Configuration:
- * share_irqs - whether we pass
SA_SHIRQ
to request_irq(). This option
+ * share_irqs - whether we pass
IRQF_SHARED
to request_irq(). This option
* is unsafe when used on edge-triggered interrupts.
*/
static unsigned int share_irqs = SERIAL8250_SHARE_IRQS;
* is unsafe when used on edge-triggered interrupts.
*/
static unsigned int share_irqs = SERIAL8250_SHARE_IRQS;
@@
-303,6
+302,7
@@
static inline int map_8250_out_reg(struct uart_8250_port *up, int offset)
static unsigned int serial_in(struct uart_8250_port *up, int offset)
{
static unsigned int serial_in(struct uart_8250_port *up, int offset)
{
+ unsigned int tmp;
offset = map_8250_in_reg(up, offset) << up->port.regshift;
switch (up->port.iotype) {
offset = map_8250_in_reg(up, offset) << up->port.regshift;
switch (up->port.iotype) {
@@
-321,6
+321,13
@@
static unsigned int serial_in(struct uart_8250_port *up, int offset)
return __raw_readl(up->port.membase + offset);
#endif
return __raw_readl(up->port.membase + offset);
#endif
+ case UPIO_TSI:
+ if (offset == UART_IIR) {
+ tmp = readl((u32 *)(up->port.membase + UART_RX));
+ return (cpu_to_le32(tmp) >> 8) & 0xff;
+ } else
+ return readb(up->port.membase + offset);
+
default:
return inb(up->port.iobase + offset);
}
default:
return inb(up->port.iobase + offset);
}
@@
-350,6
+357,10
@@
serial_out(struct uart_8250_port *up, int offset, int value)
__raw_writel(value, up->port.membase + offset);
break;
#endif
__raw_writel(value, up->port.membase + offset);
break;
#endif
+ case UPIO_TSI:
+ if (!((offset == UART_IER) && (value & UART_IER_UUE)))
+ writeb(value, up->port.membase + offset);
+ break;
default:
outb(value, up->port.iobase + offset);
default:
outb(value, up->port.iobase + offset);
@@
-1404,7
+1415,7
@@
static void serial_do_unlink(struct irq_info *i, struct uart_8250_port *up)
static int serial_link_irq_chain(struct uart_8250_port *up)
{
struct irq_info *i = irq_lists + up->port.irq;
static int serial_link_irq_chain(struct uart_8250_port *up)
{
struct irq_info *i = irq_lists + up->port.irq;
- int ret, irq_flags = up->port.flags & UPF_SHARE_IRQ ?
SA_SHIRQ
: 0;
+ int ret, irq_flags = up->port.flags & UPF_SHARE_IRQ ?
IRQF_SHARED
: 0;
spin_lock_irq(&i->lock);
spin_lock_irq(&i->lock);
@@
-2386,7
+2397,6
@@
int __init serial8250_start_console(struct uart_port *port, char *options)
static struct uart_driver serial8250_reg = {
.owner = THIS_MODULE,
.driver_name = "serial",
static struct uart_driver serial8250_reg = {
.owner = THIS_MODULE,
.driver_name = "serial",
- .devfs_name = "tts/",
.dev_name = "ttyS",
.major = TTY_MAJOR,
.minor = 64,
.dev_name = "ttyS",
.major = TTY_MAJOR,
.minor = 64,