projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] zd1211rw: Add another ID for Linksys WUSBF54G
[powerpc.git]
/
drivers
/
serial
/
mcfserial.c
diff --git
a/drivers/serial/mcfserial.c
b/drivers/serial/mcfserial.c
index
3db206d
..
99af084
100644
(file)
--- a/
drivers/serial/mcfserial.c
+++ b/
drivers/serial/mcfserial.c
@@
-425,15
+425,13
@@
irqreturn_t mcfrs_interrupt(int irq, void *dev_id)
* -------------------------------------------------------------------
*/
* -------------------------------------------------------------------
*/
-static void mcfrs_offintr(
void *private
)
+static void mcfrs_offintr(
struct work_struct *work
)
{
{
- struct mcf_serial
*info = (struct mcf_serial *) private
;
- struct tty_struct
*
tty;
+ struct mcf_serial
*info = container_of(work, struct mcf_serial, tqueue)
;
+ struct tty_struct
*tty = info->
tty;
- tty = info->tty;
- if (!tty)
- return;
- tty_wakeup(tty);
+ if (tty)
+ tty_wakeup(tty);
}
}
@@
-497,16
+495,13
@@
static void mcfrs_timer(void)
* do_serial_hangup() -> tty->hangup() -> mcfrs_hangup()
*
*/
* do_serial_hangup() -> tty->hangup() -> mcfrs_hangup()
*
*/
-static void do_serial_hangup(
void *private
)
+static void do_serial_hangup(
struct work_struct *work
)
{
{
- struct mcf_serial
*info = (struct mcf_serial *) private
;
- struct tty_struct
*
tty;
+ struct mcf_serial
*info = container_of(work, struct mcf_serial, tqueue_hangup)
;
+ struct tty_struct
*tty = info->
tty;
- tty = info->tty;
- if (!tty)
- return;
-
- tty_hangup(tty);
+ if (tty)
+ tty_hangup(tty);
}
static int startup(struct mcf_serial * info)
}
static int startup(struct mcf_serial * info)
@@
-857,7
+852,7
@@
static void mcfrs_throttle(struct tty_struct * tty)
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
- printk("throttle %s: %d....\n",
_
tty_name(tty, buf),
+ printk("throttle %s: %d....\n", tty_name(tty, buf),
tty->ldisc.chars_in_buffer(tty));
#endif
tty->ldisc.chars_in_buffer(tty));
#endif
@@
-876,7
+871,7
@@
static void mcfrs_unthrottle(struct tty_struct * tty)
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
#ifdef SERIAL_DEBUG_THROTTLE
char buf[64];
- printk("unthrottle %s: %d....\n",
_
tty_name(tty, buf),
+ printk("unthrottle %s: %d....\n", tty_name(tty, buf),
tty->ldisc.chars_in_buffer(tty));
#endif
tty->ldisc.chars_in_buffer(tty));
#endif
@@
-1132,7
+1127,7
@@
static int mcfrs_ioctl(struct tty_struct *tty, struct file * file,
return 0;
}
return 0;
}
-static void mcfrs_set_termios(struct tty_struct *tty, struct termios *old_termios)
+static void mcfrs_set_termios(struct tty_struct *tty, struct
k
termios *old_termios)
{
struct mcf_serial *info = (struct mcf_serial *)tty->driver_data;
{
struct mcf_serial *info = (struct mcf_serial *)tty->driver_data;
@@
-1541,8
+1536,8
@@
static void mcfrs_irqinit(struct mcf_serial *info)
* External Pin Mask Setting & Enable External Pin for Interface
* mrcbis@aliceposta.it
*/
* External Pin Mask Setting & Enable External Pin for Interface
* mrcbis@aliceposta.it
*/
- u
nsigned short
*serpin_enable_mask;
- serpin_enable_mask = (MCF_IPSBAR + MCF_GPIO_PAR_UART);
+ u
16
*serpin_enable_mask;
+ serpin_enable_mask = (
u16 *) (
MCF_IPSBAR + MCF_GPIO_PAR_UART);
if (info->line == 0)
*serpin_enable_mask |= UART0_ENABLE_MASK;
else if (info->line == 1)
if (info->line == 0)
*serpin_enable_mask |= UART0_ENABLE_MASK;
else if (info->line == 1)
@@
-1551,6
+1546,13
@@
static void mcfrs_irqinit(struct mcf_serial *info)
*serpin_enable_mask |= UART2_ENABLE_MASK;
}
#endif
*serpin_enable_mask |= UART2_ENABLE_MASK;
}
#endif
+#if defined(CONFIG_M528x)
+ /* make sure PUAPAR is set for UART0 and UART1 */
+ if (info->line < 2) {
+ volatile unsigned char *portp = (volatile unsigned char *) (MCF_MBAR + MCF5282_GPIO_PUAPAR);
+ *portp |= (0x03 << (info->line * 2));
+ }
+#endif
#elif defined(CONFIG_M520x)
volatile unsigned char *icrp, *uartp;
volatile unsigned long *imrp;
#elif defined(CONFIG_M520x)
volatile unsigned char *icrp, *uartp;
volatile unsigned long *imrp;
@@
-1783,8
+1785,8
@@
mcfrs_init(void)
info->event = 0;
info->count = 0;
info->blocked_open = 0;
info->event = 0;
info->count = 0;
info->blocked_open = 0;
- INIT_WORK(&info->tqueue, mcfrs_offintr
, info
);
- INIT_WORK(&info->tqueue_hangup, do_serial_hangup
, info
);
+ INIT_WORK(&info->tqueue, mcfrs_offintr);
+ INIT_WORK(&info->tqueue_hangup, do_serial_hangup);
init_waitqueue_head(&info->open_wait);
init_waitqueue_head(&info->close_wait);
init_waitqueue_head(&info->open_wait);
init_waitqueue_head(&info->close_wait);