diff options
-rw-r--r-- | drivers/staging/dgap/dgap_tty.c | 47 |
1 files changed, 14 insertions, 33 deletions
diff --git a/drivers/staging/dgap/dgap_tty.c b/drivers/staging/dgap/dgap_tty.c index c077e0d..3fc6c5a 100644 --- a/drivers/staging/dgap/dgap_tty.c +++ b/drivers/staging/dgap/dgap_tty.c @@ -774,14 +774,11 @@ void dgap_input(struct channel_t *ch) DPR_READ(("dgap_input start 2\n")); /* Decide how much data we can send into the tty layer */ - if (dgap_rawreadok && tp->real_raw) - flip_len = MYFLIPLEN; - else - flip_len = TTY_FLIPBUF_SIZE; + flip_len = TTY_FLIPBUF_SIZE; /* Chop down the length, if needed */ len = min(data_len, flip_len); - len = min(len, (N_TTY_BUF_SIZE - 1) - tp->read_cnt); + len = min(len, (N_TTY_BUF_SIZE - 1)); ld = tty_ldisc_ref(tp); @@ -863,39 +860,23 @@ void dgap_input(struct channel_t *ch) * On the other hand, if we are not raw, we need to go through * the tty layer, which has its API more well defined. */ - if (dgap_rawreadok && tp->real_raw) { + if (I_PARMRK(tp) || I_BRKINT(tp) || I_INPCK(tp)) { + dgap_parity_scan(ch, ch->ch_bd->flipbuf, ch->ch_bd->flipflagbuf, &len); - /* !!! WE *MUST* LET GO OF ALL LOCKS BEFORE CALLING RECEIVE BUF !!! */ - DGAP_UNLOCK(ch->ch_lock, lock_flags2); - DGAP_UNLOCK(bd->bd_lock, lock_flags); - - DPR_READ(("dgap_input. %d real_raw len:%d calling receive_buf for buffer for board %d\n", - __LINE__, len, ch->ch_bd->boardnum)); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31) - tp->ldisc->ops->receive_buf(tp, ch->ch_bd->flipbuf, NULL, len); -#else - tp->ldisc.ops->receive_buf(tp, ch->ch_bd->flipbuf, NULL, len); -#endif + len = tty_buffer_request_room(tp->port, len); + tty_insert_flip_string_flags(tp->port, ch->ch_bd->flipbuf, + ch->ch_bd->flipflagbuf, len); } else { - if (I_PARMRK(tp) || I_BRKINT(tp) || I_INPCK(tp)) { - dgap_parity_scan(ch, ch->ch_bd->flipbuf, ch->ch_bd->flipflagbuf, &len); - - len = tty_buffer_request_room(tp->port, len); - tty_insert_flip_string_flags(tp->port, ch->ch_bd->flipbuf, - ch->ch_bd->flipflagbuf, len); - } - else { - len = tty_buffer_request_room(tp->port, len); - tty_insert_flip_string(tp->port, ch->ch_bd->flipbuf, len); - } + len = tty_buffer_request_room(tp->port, len); + tty_insert_flip_string(tp->port, ch->ch_bd->flipbuf, len); + } - DGAP_UNLOCK(ch->ch_lock, lock_flags2); - DGAP_UNLOCK(bd->bd_lock, lock_flags); + DGAP_UNLOCK(ch->ch_lock, lock_flags2); + DGAP_UNLOCK(bd->bd_lock, lock_flags); - /* Tell the tty layer its okay to "eat" the data now */ - tty_flip_buffer_push(tp->port); - } + /* Tell the tty layer its okay to "eat" the data now */ + tty_flip_buffer_push(tp->port); if (ld) tty_ldisc_deref(ld); |