ChangeSet 1.2238, 2005/04/04 08:06:21-07:00, [EMAIL PROTECTED]
[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 <[EMAIL PROTECTED]>
Signed-off-by: Al Viro <[EMAIL PROTECTED]>
Kconfig | 1 +
jsm/jsm.h | 4 ++--
jsm/jsm_neo.c | 6 +++---
jsm/jsm_tty.c | 13 ++++---------
4 files changed, 10 insertions(+), 14 deletions(-)
diff -Nru a/drivers/serial/Kconfig b/drivers/serial/Kconfig
--- a/drivers/serial/Kconfig 2005-04-04 09:08:48 -07:00
+++ b/drivers/serial/Kconfig 2005-04-04 09:08:48 -07:00
@@ -829,6 +829,7 @@
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 -Nru a/drivers/serial/jsm/jsm.h b/drivers/serial/jsm/jsm.h
--- a/drivers/serial/jsm/jsm.h 2005-04-04 09:08:48 -07:00
+++ b/drivers/serial/jsm/jsm.h 2005-04-04 09:08:48 -07:00
@@ -171,7 +171,7 @@
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 @@
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 -Nru a/drivers/serial/jsm/jsm_neo.c b/drivers/serial/jsm/jsm_neo.c
--- a/drivers/serial/jsm/jsm_neo.c 2005-04-04 09:08:48 -07:00
+++ b/drivers/serial/jsm/jsm_neo.c 2005-04-04 09:08:48 -07:00
@@ -690,7 +690,7 @@
*/
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 @@
struct jsm_channel *ch;
u8 isr;
u8 cause;
- u64 lock_flags;
+ unsigned long lock_flags;
if (!brd)
return;
@@ -830,7 +830,7 @@
{
struct jsm_channel *ch;
int linestatus;
- u64 lock_flags;
+ unsigned long lock_flags;
if (!brd)
return;
diff -Nru a/drivers/serial/jsm/jsm_tty.c b/drivers/serial/jsm/jsm_tty.c
--- a/drivers/serial/jsm/jsm_tty.c 2005-04-04 09:08:48 -07:00
+++ b/drivers/serial/jsm/jsm_tty.c 2005-04-04 09:08:48 -07:00
@@ -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 @@
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 @@
* Initialize board structure elements.
*/
- vaddr = brd->re_map_membase;
-
brd->nasync = brd->maxports;
/*
@@ -408,8 +406,7 @@
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_uart_port_init(struct jsm_board *brd)
{
int i;
- u8 *vaddr;
struct jsm_channel *ch;
if (!brd)
@@ -439,7 +435,6 @@
* Initialize board structure elements.
*/
- vaddr = brd->re_map_membase;
brd->nasync = brd->maxports;
/* Set up channel variables */
@@ -504,7 +499,7 @@
u16 head;
u16 tail;
int data_len;
- u64 lock_flags;
+ unsigned long lock_flags;
int flip_len;
int len = 0;
int n = 0;
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html