aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Viro <viro@www.linux.org.uk>2005-04-03 18:06:21 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-03 18:06:21 -0700
commit63c706b924ed0422b6816a72b8704bc3ed872792 (patch)
treeeb0d534d138aef240fc3f3b423b82ab63d66f375
parent376b07691ec54a44925b4fee024c089b8b7b6616 (diff)
[PATCH] jsm fixes
a) jsm depends on PCI. Kconfig fixed. b) spin_lock_irqsave() et.al. expect unsigned long, not u64. c) pointer arithmetics works just fine without casts to u64, thank you very much. d) iomem annotations added. e) jsm_get_mstat() lost bits - among other things it did if (mstat & UART_MSR_DSR) result |= TIOCM_DSR; and ended with return result; since TIOCM_DSR is 256 on e.g. i386, declaring result as unsigned char was a bad idea (function itself returns int). Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
-rw-r--r--drivers/serial/Kconfig1
-rw-r--r--drivers/serial/jsm/jsm.h4
-rw-r--r--drivers/serial/jsm/jsm_neo.c6
-rw-r--r--drivers/serial/jsm/jsm_tty.c13
4 files changed, 10 insertions, 14 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index cdf110fd63518..6e44b46c9e9dd 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -829,6 +829,7 @@ config SERIAL_VR41XX_CONSOLE
config SERIAL_JSM
tristate "Digi International NEO PCI Support"
+ depends on PCI
select SERIAL_CORE
help
This is a driver for Digi International's Neo series
diff --git a/drivers/serial/jsm/jsm.h b/drivers/serial/jsm/jsm.h
index 6926b100e2b04..b12ee02a0f7c3 100644
--- a/drivers/serial/jsm/jsm.h
+++ b/drivers/serial/jsm/jsm.h
@@ -171,7 +171,7 @@ struct jsm_board
u64 membase; /* Start of base memory of the card */
u64 membase_end; /* End of base memory of the card */
- u8 *re_map_membase;/* Remapped memory of the card */
+ u8 __iomem *re_map_membase;/* Remapped memory of the card */
u64 iobase; /* Start of io base of the card */
u64 iobase_end; /* End of io base of the card */
@@ -254,7 +254,7 @@ struct jsm_channel {
u8 ch_mostat; /* FEP output modem status */
u8 ch_mistat; /* FEP input modem status */
- struct neo_uart_struct *ch_neo_uart; /* Pointer to the "mapped" UART struct */
+ struct neo_uart_struct __iomem *ch_neo_uart; /* Pointer to the "mapped" UART struct */
u8 ch_cached_lsr; /* Cached value of the LSR register */
u8 *ch_rqueue; /* Our read queue buffer - malloc'ed */
diff --git a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c
index 0511d6be7d173..9b79c1ff6c723 100644
--- a/drivers/serial/jsm/jsm_neo.c
+++ b/drivers/serial/jsm/jsm_neo.c
@@ -690,7 +690,7 @@ static void neo_flush_uart_read(struct jsm_channel *ch)
*/
void neo_clear_break(struct jsm_channel *ch, int force)
{
- u64 lock_flags;
+ unsigned long lock_flags;
spin_lock_irqsave(&ch->ch_lock, lock_flags);
@@ -717,7 +717,7 @@ static inline void neo_parse_isr(struct jsm_board *brd, u32 port)
struct jsm_channel *ch;
u8 isr;
u8 cause;
- u64 lock_flags;
+ unsigned long lock_flags;
if (!brd)
return;
@@ -830,7 +830,7 @@ static inline void neo_parse_lsr(struct jsm_board *brd, u32 port)
{
struct jsm_channel *ch;
int linestatus;
- u64 lock_flags;
+ unsigned long lock_flags;
if (!brd)
return;
diff --git a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c
index b6bc881166c0d..7fb7cc07074bc 100644
--- a/drivers/serial/jsm/jsm_tty.c
+++ b/drivers/serial/jsm/jsm_tty.c
@@ -34,7 +34,7 @@
static inline int jsm_get_mstat(struct jsm_channel *ch)
{
unsigned char mstat;
- unsigned char result;
+ unsigned result;
jsm_printk(IOCTL, INFO, &ch->ch_bd->pci_dev, "start\n");
@@ -359,7 +359,7 @@ static struct uart_ops jsm_ops = {
int jsm_tty_init(struct jsm_board *brd)
{
int i;
- u8 *vaddr;
+ void __iomem *vaddr;
struct jsm_channel *ch;
if (!brd)
@@ -371,8 +371,6 @@ int jsm_tty_init(struct jsm_board *brd)
* Initialize board structure elements.
*/
- vaddr = brd->re_map_membase;
-
brd->nasync = brd->maxports;
/*
@@ -408,8 +406,7 @@ int jsm_tty_init(struct jsm_board *brd)
spin_lock_init(&ch->ch_lock);
if (brd->bd_uart_offset == 0x200)
- ch->ch_neo_uart = (struct neo_uart_struct *) ((u64) vaddr
- + (brd->bd_uart_offset * i));
+ ch->ch_neo_uart = vaddr + (brd->bd_uart_offset * i);
ch->ch_bd = brd;
ch->ch_portnum = i;
@@ -427,7 +424,6 @@ int jsm_tty_init(struct jsm_board *brd)
int jsm_uart_port_init(struct jsm_board *brd)
{
int i;
- u8 *vaddr;
struct jsm_channel *ch;
if (!brd)
@@ -439,7 +435,6 @@ int jsm_uart_port_init(struct jsm_board *brd)
* Initialize board structure elements.
*/
- vaddr = brd->re_map_membase;
brd->nasync = brd->maxports;
/* Set up channel variables */
@@ -504,7 +499,7 @@ void jsm_input(struct jsm_channel *ch)
u16 head;
u16 tail;
int data_len;
- u64 lock_flags;
+ unsigned long lock_flags;
int flip_len;
int len = 0;
int n = 0;