Loading drivers/staging/dgap/dgap.c +121 −217 Original line number Diff line number Diff line Loading @@ -234,8 +234,7 @@ module_exit(dgap_cleanup_module); /* * File operations permitted on Control/Management major. */ static struct file_operations DgapBoardFops = { static const struct file_operations DgapBoardFops = { .owner = THIS_MODULE, }; Loading Loading @@ -325,8 +324,7 @@ struct board_id { uint dpatype; }; static struct board_id dgap_Ids[] = { static struct board_id dgap_Ids[] = { { PPCM, PCI_DEVICE_XEM_NAME, 64, (T_PCXM | T_PCLITE | T_PCIBUS) }, { PCX, PCI_DEVICE_CX_NAME, 128, (T_CX | T_PCIBUS) }, { PCX, PCI_DEVICE_CX_IBM_NAME, 128, (T_CX | T_PCIBUS) }, Loading Loading @@ -414,8 +412,7 @@ static struct digi_t dgap_digi_init = { * 1 stop bit. */ static struct ktermios DgapDefaultTermios = { static struct ktermios DgapDefaultTermios = { .c_iflag = (DEFAULT_IFLAGS), /* iflags */ .c_oflag = (DEFAULT_OFLAGS), /* oflags */ .c_cflag = (DEFAULT_CFLAGS), /* cflags */ Loading Loading @@ -534,9 +531,8 @@ int dgap_init_module(void) */ rc = dgap_start(); if (rc < 0) { if (rc < 0) return rc; } /* * Find and configure all the cards Loading @@ -554,8 +550,7 @@ int dgap_init_module(void) printk("WARNING: dgap driver load failed. No DGAP boards found.\n"); dgap_cleanup_module(); } else { } else { dgap_create_driver_sysfiles(&dgap_driver); dgap_driver_state = DRIVER_READY; } Loading Loading @@ -827,9 +822,8 @@ static int dgap_found_board(struct pci_dev *pdev, int id) brd->wait_for_bios = 0; brd->wait_for_fep = 0; for (i = 0; i < MAXPORTS; i++) { for (i = 0; i < MAXPORTS; i++) brd->channels[i] = NULL; } /* store which card & revision we have */ pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID, &brd->subvendor); Loading Loading @@ -911,7 +905,8 @@ static int dgap_found_board(struct pci_dev *pdev, int id) } static int dgap_finalize_board_init(struct board_t *brd) { static int dgap_finalize_board_init(struct board_t *brd) { int rc; Loading Loading @@ -1174,16 +1169,13 @@ static void dgap_poll_handler(ulong dummy) brd = dgap_Board[i]; if (brd->state == BOARD_FAILED) { if (brd->state == BOARD_FAILED) continue; } if (!brd->intr_running) { if (!brd->intr_running) /* Call the real board poller directly */ dgap_poll_tasklet((unsigned long) brd); } } } else { } else { /* Go thru each board, kicking off a tasklet for each if needed */ for (i = 0; i < dgap_NumBoards; i++) { brd = dgap_Board[i]; Loading @@ -1195,9 +1187,8 @@ static void dgap_poll_handler(ulong dummy) * Basically, I just really don't want to spin in here, because I want * to kick off my tasklets as fast as I can, and then get out the poller. */ if (!spin_trylock(&brd->bd_lock)) { if (!spin_trylock(&brd->bd_lock)) continue; } /* If board is in a failed state, don't bother scheduling a tasklet */ if (brd->state == BOARD_FAILED) { Loading @@ -1206,9 +1197,8 @@ static void dgap_poll_handler(ulong dummy) } /* Schedule a poll helper task */ if (!brd->intr_running) { if (!brd->intr_running) tasklet_schedule(&brd->helper_tasklet); } /* * Can't do DGAP_UNLOCK here, as we don't have Loading @@ -1228,9 +1218,8 @@ static void dgap_poll_handler(ulong dummy) new_time = dgap_poll_time - jiffies; if ((ulong) new_time >= 2 * dgap_poll_tick) { if ((ulong) new_time >= 2 * dgap_poll_tick) dgap_poll_time = jiffies + dgap_jiffies_from_ms(dgap_poll_tick); } dgap_poll_timer.function = dgap_poll_handler; dgap_poll_timer.data = 0; Loading Loading @@ -1285,9 +1274,8 @@ static void dgap_init_globals(void) dgap_rawreadok = rawreadok; for (i = 0; i < MAXBOARDS; i++) { for (i = 0; i < MAXBOARDS; i++) dgap_Board[i] = NULL; } init_timer( &dgap_poll_timer ); Loading Loading @@ -1469,13 +1457,11 @@ static int dgap_tty_init(struct board_t *brd) brd->nasync = dgap_config_get_number_of_ports(brd); if (!brd->nasync) { if (!brd->nasync) brd->nasync = brd->maxports; } if (brd->nasync > brd->maxports) { if (brd->nasync > brd->maxports) brd->nasync = brd->maxports; } if (true_count != brd->nasync) { if ((brd->type == PPCM) && (true_count == 64)) Loading Loading @@ -1552,8 +1538,7 @@ static int dgap_tty_init(struct board_t *brd) ch->ch_dsr = DM_CD; ch->ch_cd = DM_DSR; ch->ch_digi.digi_flags |= DIGI_ALTPIN; } else { } else { ch->ch_cd = DM_CD; ch->ch_dsr = DM_DSR; } Loading Loading @@ -1731,9 +1716,8 @@ static void dgap_sniff_nowait_nolock(struct channel_t *ch, uchar *text, uchar *b * We *cannot* sleep here waiting for space, because this * function was probably called by the interrupt/timer routines! */ if (n == 0) { if (n == 0) return; } /* * Copy as much data as will fit. Loading Loading @@ -1814,9 +1798,8 @@ static void dgap_input(struct channel_t *ch) tp = ch->ch_tun.un_tty; bs = ch->ch_bs; if (!bs) { if (!bs) return; } bd = ch->ch_bd; if(!bd || bd->magic != DGAP_BOARD_MAGIC) Loading Loading @@ -1974,8 +1957,7 @@ static void dgap_input(struct channel_t *ch) 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 { } else { len = tty_buffer_request_room(tp->port, len); tty_insert_flip_string(tp->port, ch->ch_bd->flipbuf, len); } Loading Loading @@ -2015,8 +1997,7 @@ static void dgap_carrier(struct channel_t *ch) if (ch->ch_digi.digi_flags & DIGI_ALTPIN) { ch->ch_dsr = DM_CD; ch->ch_cd = DM_DSR; } else { } else { ch->ch_dsr = DM_DSR; ch->ch_cd = DM_CD; } Loading @@ -2024,13 +2005,11 @@ static void dgap_carrier(struct channel_t *ch) if (ch->ch_mistat & D_CD(ch)) phys_carrier = 1; if (ch->ch_digi.digi_flags & DIGI_FORCEDCD) { if (ch->ch_digi.digi_flags & DIGI_FORCEDCD) virt_carrier = 1; } if (ch->ch_c_cflag & CLOCAL) { if (ch->ch_c_cflag & CLOCAL) virt_carrier = 1; } /* * Test for a VIRTUAL carrier transition to HIGH. Loading Loading @@ -2069,9 +2048,9 @@ static void dgap_carrier(struct channel_t *ch) * matter... it really only means "ignore carrier state", not * "make pretend that carrier is there". */ if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) && (phys_carrier == 0)) { if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) && (phys_carrier == 0)) { /* * When carrier drops: Loading Loading @@ -2138,15 +2117,13 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) major = MAJOR(tty_devnum(tty)); minor = MINOR(tty_devnum(tty)); if (major > 255) { if (major > 255) return -ENXIO; } /* Get board pointer from our array of majors we have allocated */ brd = dgap_BoardsByMajor[major]; if (!brd) { if (!brd) return -ENXIO; } /* * If board is not yet up to a state of READY, go to Loading @@ -2155,9 +2132,8 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) rc = wait_event_interruptible(brd->state_wait, (brd->state & BOARD_READY)); if (rc) { if (rc) return rc; } DGAP_LOCK(brd->bd_lock, lock_flags); Loading Loading @@ -2186,12 +2162,10 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) if (major == brd->dgap_Serial_Major) { un = &brd->channels[minor]->ch_tun; un->un_type = DGAP_SERIAL; } else if (major == brd->dgap_TransparentPrint_Major) { } else if (major == brd->dgap_TransparentPrint_Major) { un = &brd->channels[minor]->ch_pun; un->un_type = DGAP_PRINT; } else { } else { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(brd->bd_lock, lock_flags); return -ENXIO; Loading Loading @@ -2263,9 +2237,8 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) rc = dgap_block_til_ready(tty, file, ch); if (!un->un_tty) { if (!un->un_tty) return -ENODEV; } /* No going back now, increment our unit and channel counters */ DGAP_LOCK(ch->ch_lock, lock_flags); Loading @@ -2291,14 +2264,13 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc uint old_flags = 0; int sleep_on_un_flags = 0; if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGAP_CHANNEL_MAGIC) return -ENXIO; } un = tty->driver_data; if (!un || un->magic != DGAP_UNIT_MAGIC) { if (!un || un->magic != DGAP_UNIT_MAGIC) return -ENXIO; } DGAP_LOCK(ch->ch_lock, lock_flags); Loading Loading @@ -2339,21 +2311,18 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc * 3) DCD (fake or real) is active. */ if (file->f_flags & O_NONBLOCK) { if (file->f_flags & O_NONBLOCK) break; } if (tty->flags & (1 << TTY_IO_ERROR)) { if (tty->flags & (1 << TTY_IO_ERROR)) break; } if (ch->ch_flags & CH_CD) break; if (ch->ch_flags & CH_FCAR) break; } else { } else { sleep_on_un_flags = 1; } Loading Loading @@ -2389,8 +2358,7 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc if (sleep_on_un_flags) { retval = wait_event_interruptible(un->un_flags_wait, (old_flags != (ch->ch_tun.un_flags | ch->ch_pun.un_flags))); } else { } else { retval = wait_event_interruptible(ch->ch_flags_wait, (old_flags != ch->ch_flags)); } Loading Loading @@ -2642,8 +2610,7 @@ static int dgap_tty_chars_in_buffer(struct tty_struct *tty) if ((ttail == thead) && (tbusy == 0) && (chead == ctail)) { chars = 0; } else { } else { if (thead >= ttail) chars = thead - ttail; else Loading Loading @@ -2718,10 +2685,9 @@ static int dgap_wait_for_drain(struct tty_struct *tty) /* Go to sleep till we get woken up */ ret = wait_event_interruptible(un->un_flags_wait, ((un->un_flags & UN_EMPTY) == 0)); /* If ret is non-zero, user ctrl-c'ed us */ if (ret) { if (ret) break; } } DGAP_LOCK(ch->ch_lock, lock_flags); un->un_flags &= ~(UN_EMPTY); Loading Loading @@ -2772,12 +2738,10 @@ static int dgap_maxcps_room(struct tty_struct *tty, int bytes_available) /* buffer is empty */ ch->ch_cpstime = current_time; /* reset ch_cpstime */ cps_limit = ch->ch_digi.digi_bufsize; } else if (ch->ch_cpstime < buffer_time) { } else if (ch->ch_cpstime < buffer_time) { /* still room in the buffer */ cps_limit = ((buffer_time - ch->ch_cpstime) * ch->ch_digi.digi_maxcps) / HZ; } else { } else { /* no room in the buffer */ cps_limit = 0; } Loading Loading @@ -2868,8 +2832,7 @@ static int dgap_tty_write_room(struct tty_struct *tty) if (!(ch->ch_flags & CH_PRON)) ret -= ch->ch_digi.digi_onlen; ret -= ch->ch_digi.digi_offlen; } else { } else { if (ch->ch_flags & CH_PRON) ret -= ch->ch_digi.digi_offlen; } Loading Loading @@ -3025,9 +2988,8 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int * the board. */ /* we're allowed to block if it's from_user */ if (down_interruptible(&dgap_TmpWriteSem)) { if (down_interruptible(&dgap_TmpWriteSem)) return -EINTR; } if (copy_from_user(dgap_TmpWriteBuf, (const uchar __user *) buf, count)) { up(&dgap_TmpWriteSem); Loading Loading @@ -3097,8 +3059,7 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int if (tail != head) { un->un_flags |= UN_EMPTY; writeb(1, &(bs->iempty)); } else { } else { dgap_wmove(ch, ch->ch_digi.digi_offstr, (int) ch->ch_digi.digi_offlen); head = readw(&(bs->tx_head)) & tmask; Loading @@ -3115,10 +3076,8 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int if (from_user) { DGAP_UNLOCK(ch->ch_lock, lock_flags); up(&dgap_TmpWriteSem); } else { } else DGAP_UNLOCK(ch->ch_lock, lock_flags); } return count; } Loading Loading @@ -3346,15 +3305,12 @@ static void dgap_tty_send_xchar(struct tty_struct *tty, char c) * by hand... */ #if 0 if (c == STOP_CHAR(tty)) { if (c == STOP_CHAR(tty)) dgap_cmdw(ch, RPAUSE, 0, 0); } else if (c == START_CHAR(tty)) { else if (c == START_CHAR(tty)) dgap_cmdw(ch, RRESUME, 0, 0); } else { else dgap_wmove(ch, &c, 1); } #else dgap_wmove(ch, &c, 1); #endif Loading Loading @@ -3474,19 +3430,15 @@ static int dgap_set_modem_info(struct tty_struct *tty, unsigned int command, uns case TIOCMSET: ch->ch_mforce = D_DTR(ch)|D_RTS(ch); if (arg & TIOCM_RTS) { if (arg & TIOCM_RTS) ch->ch_mval |= D_RTS(ch); } else { else ch->ch_mval &= ~(D_RTS(ch)); } if (arg & TIOCM_DTR) { if (arg & TIOCM_DTR) ch->ch_mval |= (D_DTR(ch)); } else { else ch->ch_mval &= ~(D_DTR(ch)); } break; Loading Loading @@ -4146,9 +4098,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); Loading @@ -4158,9 +4109,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, DGAP_LOCK(bd->bd_lock, lock_flags); DGAP_LOCK(ch->ch_lock, lock_flags2); if(((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) { if (((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) dgap_cmdw(ch, SBREAK, (u16) SBREAK_TIME, 0); } DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); Loading @@ -4178,9 +4128,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); if (rc) Loading @@ -4206,9 +4155,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); if (rc) Loading Loading @@ -4432,10 +4380,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, return -EINTR; DGAP_LOCK(bd->bd_lock, lock_flags); DGAP_LOCK(ch->ch_lock, lock_flags2); } else { } else tty_ldisc_flush(tty); } /* fall thru */ case DIGI_SETA: Loading Loading @@ -4735,9 +4681,9 @@ static void dgap_do_reset_board(struct board_t *brd) u32 check2; int i = 0; if (!brd || (brd->magic != DGAP_BOARD_MAGIC) || !brd->re_map_membase || !brd->re_map_port) { if (!brd || (brd->magic != DGAP_BOARD_MAGIC) || !brd->re_map_membase || !brd->re_map_port) return; } /* FEPRST does not vary among supported boards */ writeb(FEPRST, brd->re_map_port); Loading Loading @@ -4945,9 +4891,8 @@ static void dgap_poll_tasklet(unsigned long data) return; } if (!bd->nasync) { if (!bd->nasync) goto out; } eaddr = (struct ev_t *) (vaddr + EVBUF); Loading @@ -4968,9 +4913,8 @@ static void dgap_poll_tasklet(unsigned long data) /* * If board is doing interrupts, ACK the interrupt. */ if (bd && bd->intr_running) { if (bd && bd->intr_running) readb(bd->re_map_port + 2); } DGAP_UNLOCK(bd->bd_lock, lock_flags); return; Loading @@ -4988,9 +4932,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Move to next state */ if (bd->state == FINISHED_RESET) { if (bd->state == FINISHED_RESET) bd->state = NEED_CONFIG; } if (bd->state == NEED_CONFIG) { /* Loading @@ -5004,25 +4947,21 @@ static void dgap_poll_tasklet(unsigned long data) * back, and this is a PAPORT8 board, retry with a * PAPORT4 attempt as well. */ if (bd->type == PAPORT8 && !bd->bd_config) { if (bd->type == PAPORT8 && !bd->bd_config) bd->bd_config = dgap_find_config(PAPORT4, bd->pci_bus, bd->pci_slot); } /* * Register the ttys (if any) into the kernel. */ if (bd->bd_config) { if (bd->bd_config) bd->state = FINISHED_CONFIG; } else { else bd->state = CONFIG_NOT_FOUND; } } /* Move to next state */ if (bd->state == FINISHED_CONFIG) { if (bd->state == FINISHED_CONFIG) bd->state = NEED_DEVICE_CREATION; } /* Move to next state */ if (bd->state == NEED_DEVICE_CREATION) { Loading @@ -5038,9 +4977,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Move to next state */ if (bd->state == FINISHED_DEVICE_CREATION) { if (bd->state == FINISHED_DEVICE_CREATION) bd->state = NEED_BIOS_LOAD; } /* Move to next state */ if (bd->state == NEED_BIOS_LOAD) { Loading @@ -5056,9 +4994,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Wait for BIOS to test board... */ if (bd->state == WAIT_BIOS_LOAD) { if (bd->state == WAIT_BIOS_LOAD) dgap_do_wait_for_bios(bd); } /* Move to next state */ if (bd->state == FINISHED_BIOS_LOAD) { Loading @@ -5076,10 +5013,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Wait for FEP to load on board... */ if (bd->state == WAIT_FEP_LOAD) { if (bd->state == WAIT_FEP_LOAD) dgap_do_wait_for_fep(bd); } /* Move to next state */ if (bd->state == FINISHED_FEP_LOAD) { Loading @@ -5093,8 +5028,7 @@ static void dgap_poll_tasklet(unsigned long data) dgap_tty_uninit(bd); bd->state = BOARD_FAILED; bd->dpastatus = BD_NOFEP; } else { } else { bd->state = NEED_PROC_CREATION; /* Loading Loading @@ -5370,11 +5304,10 @@ static void dgap_cmdw_ext(struct channel_t *ch, u16 cmd, u16 word, uint ncmds) * If the second part of the command won't fit, * put it at the beginning of the circular buffer. */ if (((head + 4) >= ((CMDMAX - CMDSTART)) || (head & 03))) { if (((head + 4) >= ((CMDMAX - CMDSTART)) || (head & 03))) writew((u16) word, (char *) (vaddr + CMDSTART)); } else { else writew((u16) word, (char *) (vaddr + head + CMDSTART + 4)); } head = (head + 8) & (CMDMAX - CMDSTART - 4); Loading Loading @@ -5433,9 +5366,9 @@ static void dgap_wmove(struct channel_t *ch, char *buf, uint cnt) /* * If pointers are out of range, just return. */ if ((cnt > ch->ch_tsize) || (unsigned)(head - ch->ch_tstart) >= ch->ch_tsize) { if ((cnt > ch->ch_tsize) || (unsigned)(head - ch->ch_tstart) >= ch->ch_tsize) return; } /* * If the write wraps over the top of the circular buffer, Loading Loading @@ -5474,13 +5407,11 @@ static uint dgap_get_custom_baud(struct channel_t *ch) ulong offset = 0; uint value = 0; if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) return 0; } if (!ch->ch_bd || ch->ch_bd->magic != DGAP_BOARD_MAGIC) { if (!ch->ch_bd || ch->ch_bd->magic != DGAP_BOARD_MAGIC) return 0; } if (!(ch->ch_bd->bd_flags & BD_FEP5PLUS)) return 0; Loading Loading @@ -5657,9 +5588,10 @@ static int dgap_param(struct tty_struct *tty) jindex = baud; if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && (jindex < 16)) { if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && (jindex < 16)) baud = bauds[iindex][jindex]; } else else baud = 0; if (baud == 0) Loading Loading @@ -5779,9 +5711,8 @@ static int dgap_param(struct tty_struct *tty) */ hflow = 0; if (ch->ch_c_cflag & CRTSCTS) { if (ch->ch_c_cflag & CRTSCTS) hflow |= (D_RTS(ch) | D_CTS(ch)); } if (ch->ch_digi.digi_flags & RTSPACE) hflow |= D_RTS(ch); if (ch->ch_digi.digi_flags & DTRPACE) Loading @@ -5806,12 +5737,10 @@ static int dgap_param(struct tty_struct *tty) */ if (bd->bd_flags & BD_FEP5PLUS) { u16 hflow2 = 0; if (ch->ch_digi.digi_flags & DIGI_RTS_TOGGLE) { if (ch->ch_digi.digi_flags & DIGI_RTS_TOGGLE) hflow2 |= (D_RTS(ch)); } if (ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) { if (ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) hflow2 |= (D_DTR(ch)); } dgap_cmdw_ext(ch, 0xff03, hflow2, 0); } Loading Loading @@ -5890,10 +5819,10 @@ static void dgap_parity_scan(struct channel_t *ch, unsigned char *cbuf, unsigned case 0: /* No FF seen yet */ if (c == (unsigned char) '\377') { if (c == (unsigned char) '\377') /* delete this character from stream */ ch->pscan_state = 1; } else { else { *cout++ = c; *fout++ = TTY_NORMAL; count += 1; Loading Loading @@ -5925,8 +5854,7 @@ static void dgap_parity_scan(struct channel_t *ch, unsigned char *cbuf, unsigned if (c == 0x0) { ch->ch_err_break++; *fout++ = TTY_BREAK; } else { } else { ch->ch_err_parity++; *fout++ = TTY_PARITY; } Loading Loading @@ -6016,15 +5944,13 @@ static int dgap_event(struct board_t *bd) if (port >= bd->nasync) goto next; if (!(reason & (IFMODEM | IFBREAK | IFTLW | IFTEM | IFDATA))) { if (!(reason & (IFMODEM | IFBREAK | IFTLW | IFTEM | IFDATA))) goto next; } ch = bd->channels[port]; if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) goto next; } /* * If we have made it here, the event was valid. Loading Loading @@ -6102,8 +6028,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_tun.un_flags & UN_ISOPEN) { if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_tun.un_tty->ldisc->ops->write_wakeup)(ch->ch_tun.un_tty); Loading @@ -6120,8 +6045,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_pun.un_flags & UN_ISOPEN) { if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty); Loading @@ -6148,8 +6072,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_tun.un_flags & UN_ISOPEN) { if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); Loading @@ -6167,8 +6090,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_pun.un_flags & UN_ISOPEN) { if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty); Loading Loading @@ -6271,10 +6193,9 @@ static void dgap_create_driver_sysfiles(struct pci_driver *dgap_driver) rc |= driver_create_file(driverfs, &driver_attr_pollrate); rc |= driver_create_file(driverfs, &driver_attr_pollcounter); rc |= driver_create_file(driverfs, &driver_attr_state); if (rc) { if (rc) printk(KERN_ERR "DGAP: sysfs driver_create_file failed!\n"); } } static void dgap_remove_driver_sysfiles(struct pci_driver *dgap_driver) Loading Loading @@ -6345,7 +6266,7 @@ static ssize_t dgap_ports_msignals_show(struct device *p, struct device_attribut DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { if (bd->channels[i]->ch_open_count) { if (bd->channels[i]->ch_open_count) count += snprintf(buf + count, PAGE_SIZE - count, "%d %s %s %s %s %s %s\n", bd->channels[i]->ch_portnum, (bd->channels[i]->ch_mostat & UART_MCR_RTS) ? "RTS" : "", Loading @@ -6354,11 +6275,10 @@ static ssize_t dgap_ports_msignals_show(struct device *p, struct device_attribut (bd->channels[i]->ch_mistat & UART_MSR_DSR) ? "DSR" : "", (bd->channels[i]->ch_mistat & UART_MSR_DCD) ? "DCD" : "", (bd->channels[i]->ch_mistat & UART_MSR_RI) ? "RI" : ""); } else { else count += snprintf(buf + count, PAGE_SIZE - count, "%d\n", bd->channels[i]->ch_portnum); } } return count; } static DEVICE_ATTR(ports_msignals, S_IRUSR, dgap_ports_msignals_show, NULL); Loading @@ -6372,10 +6292,9 @@ static ssize_t dgap_ports_iflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_iflag); } return count; } static DEVICE_ATTR(ports_iflag, S_IRUSR, dgap_ports_iflag_show, NULL); Loading @@ -6389,10 +6308,9 @@ static ssize_t dgap_ports_cflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_cflag); } return count; } static DEVICE_ATTR(ports_cflag, S_IRUSR, dgap_ports_cflag_show, NULL); Loading @@ -6406,10 +6324,9 @@ static ssize_t dgap_ports_oflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_oflag); } return count; } static DEVICE_ATTR(ports_oflag, S_IRUSR, dgap_ports_oflag_show, NULL); Loading @@ -6423,10 +6340,9 @@ static ssize_t dgap_ports_lflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_lflag); } return count; } static DEVICE_ATTR(ports_lflag, S_IRUSR, dgap_ports_lflag_show, NULL); Loading @@ -6440,10 +6356,9 @@ static ssize_t dgap_ports_digi_flag_show(struct device *p, struct device_attribu DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_digi.digi_flags); } return count; } static DEVICE_ATTR(ports_digi_flag, S_IRUSR, dgap_ports_digi_flag_show, NULL); Loading @@ -6457,10 +6372,9 @@ static ssize_t dgap_ports_rxcount_show(struct device *p, struct device_attribute DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %ld\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_rxcount); } return count; } static DEVICE_ATTR(ports_rxcount, S_IRUSR, dgap_ports_rxcount_show, NULL); Loading @@ -6474,10 +6388,9 @@ static ssize_t dgap_ports_txcount_show(struct device *p, struct device_attribute DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %ld\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_txcount); } return count; } static DEVICE_ATTR(ports_txcount, S_IRUSR, dgap_ports_txcount_show, NULL); Loading @@ -6501,10 +6414,9 @@ static void dgap_create_ports_sysfiles(struct board_t *bd) rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_digi_flag); rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_rxcount); rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_txcount); if (rc) { if (rc) printk(KERN_ERR "DGAP: sysfs device_create_file failed!\n"); } } /* removes all the sys files created for that port */ Loading Loading @@ -6831,31 +6743,27 @@ static ssize_t dgap_tty_name_show(struct device *d, struct device_attribute *att if (strstr(cptr->u.ttyname, "tty")) { ptr1 = cptr->u.ttyname; ptr1 += 3; } else { } else ptr1 = cptr->u.ttyname; } for (i = 0; i < dgap_config_get_number_of_ports(bd); i++) { if (cn == i) { if (cn == i) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", ptr1, i + starto); } } } if (cptr->type == CNODE) { for (i = 0; i < cptr->u.conc.nport; i++) { if (cn == (i + ncount)) { if (cn == (i + ncount)) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", cptr->u.conc.id, i + (cptr->u.conc.v_start ? cptr->u.conc.start : 1)); } } ncount += cptr->u.conc.nport; } Loading @@ -6863,13 +6771,12 @@ static ssize_t dgap_tty_name_show(struct device *d, struct device_attribute *att if (cptr->type == MNODE) { for (i = 0; i < cptr->u.module.nport; i++) { if (cn == (i + ncount)) { if (cn == (i + ncount)) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", cptr->u.module.id, i + (cptr->u.module.v_start ? cptr->u.module.start : 1)); } } ncount += cptr->u.module.nport; Loading Loading @@ -6942,9 +6849,8 @@ static int dgap_parsefile(char **in, int Remove) brd = line = conc = NULL; /* perhaps we are adding to an existing list? */ while (p->next != NULL) { while (p->next != NULL) p = p->next; } /* file must start with a BEGIN */ while ( (rc = dgap_gettok(in,p)) != BEGIN ) { Loading Loading @@ -7692,8 +7598,7 @@ static char *dgap_sindex (char *string, char *group) if (*ptr == '\0') return string; } } else { } else { for (; *string; string++) { for (ptr = group; *ptr; ptr++) { if (*ptr == *string) Loading @@ -7718,14 +7623,12 @@ static int dgap_gettok(char **in, struct cnode *p) w = dgap_getword(in); snprintf(dgap_cword, MAXCWORD, "%s", w); for (t = dgap_tlist; t->token != 0; t++) { if ( !strcmp(w, t->string)) { if ( !strcmp(w, t->string)) return t->token; } } dgap_err("board !!type not specified"); return 1; } else { } else { while ( (w = dgap_getword(in)) != NULL ) { snprintf(dgap_cword, MAXCWORD, "%s", w); for (t = dgap_tlist; t->token != 0; t++) { Loading Loading @@ -7857,9 +7760,10 @@ static int dgap_checknode(struct cnode *p) static char *dgap_savestring(char *s) { char *p; if ( (p = kmalloc(strlen(s) + 1, GFP_ATOMIC) ) != NULL) { p = kmalloc(strlen(s) + 1, GFP_ATOMIC); if (p) strcpy(p, s); } return p; } Loading Loading @@ -7937,12 +7841,12 @@ static struct cnode *dgap_find_config(int type, int bus, int slot) if (p->u.board.type == type) { if (p->u.board.v_pcibus && p->u.board.pcibus != bus) { if (p->u.board.v_pcibus && p->u.board.pcibus != bus) continue; } if (p->u.board.v_pcislot && p->u.board.pcislot != slot) { if (p->u.board.v_pcislot && p->u.board.pcislot != slot) continue; } found = p; /* Loading Loading
drivers/staging/dgap/dgap.c +121 −217 Original line number Diff line number Diff line Loading @@ -234,8 +234,7 @@ module_exit(dgap_cleanup_module); /* * File operations permitted on Control/Management major. */ static struct file_operations DgapBoardFops = { static const struct file_operations DgapBoardFops = { .owner = THIS_MODULE, }; Loading Loading @@ -325,8 +324,7 @@ struct board_id { uint dpatype; }; static struct board_id dgap_Ids[] = { static struct board_id dgap_Ids[] = { { PPCM, PCI_DEVICE_XEM_NAME, 64, (T_PCXM | T_PCLITE | T_PCIBUS) }, { PCX, PCI_DEVICE_CX_NAME, 128, (T_CX | T_PCIBUS) }, { PCX, PCI_DEVICE_CX_IBM_NAME, 128, (T_CX | T_PCIBUS) }, Loading Loading @@ -414,8 +412,7 @@ static struct digi_t dgap_digi_init = { * 1 stop bit. */ static struct ktermios DgapDefaultTermios = { static struct ktermios DgapDefaultTermios = { .c_iflag = (DEFAULT_IFLAGS), /* iflags */ .c_oflag = (DEFAULT_OFLAGS), /* oflags */ .c_cflag = (DEFAULT_CFLAGS), /* cflags */ Loading Loading @@ -534,9 +531,8 @@ int dgap_init_module(void) */ rc = dgap_start(); if (rc < 0) { if (rc < 0) return rc; } /* * Find and configure all the cards Loading @@ -554,8 +550,7 @@ int dgap_init_module(void) printk("WARNING: dgap driver load failed. No DGAP boards found.\n"); dgap_cleanup_module(); } else { } else { dgap_create_driver_sysfiles(&dgap_driver); dgap_driver_state = DRIVER_READY; } Loading Loading @@ -827,9 +822,8 @@ static int dgap_found_board(struct pci_dev *pdev, int id) brd->wait_for_bios = 0; brd->wait_for_fep = 0; for (i = 0; i < MAXPORTS; i++) { for (i = 0; i < MAXPORTS; i++) brd->channels[i] = NULL; } /* store which card & revision we have */ pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID, &brd->subvendor); Loading Loading @@ -911,7 +905,8 @@ static int dgap_found_board(struct pci_dev *pdev, int id) } static int dgap_finalize_board_init(struct board_t *brd) { static int dgap_finalize_board_init(struct board_t *brd) { int rc; Loading Loading @@ -1174,16 +1169,13 @@ static void dgap_poll_handler(ulong dummy) brd = dgap_Board[i]; if (brd->state == BOARD_FAILED) { if (brd->state == BOARD_FAILED) continue; } if (!brd->intr_running) { if (!brd->intr_running) /* Call the real board poller directly */ dgap_poll_tasklet((unsigned long) brd); } } } else { } else { /* Go thru each board, kicking off a tasklet for each if needed */ for (i = 0; i < dgap_NumBoards; i++) { brd = dgap_Board[i]; Loading @@ -1195,9 +1187,8 @@ static void dgap_poll_handler(ulong dummy) * Basically, I just really don't want to spin in here, because I want * to kick off my tasklets as fast as I can, and then get out the poller. */ if (!spin_trylock(&brd->bd_lock)) { if (!spin_trylock(&brd->bd_lock)) continue; } /* If board is in a failed state, don't bother scheduling a tasklet */ if (brd->state == BOARD_FAILED) { Loading @@ -1206,9 +1197,8 @@ static void dgap_poll_handler(ulong dummy) } /* Schedule a poll helper task */ if (!brd->intr_running) { if (!brd->intr_running) tasklet_schedule(&brd->helper_tasklet); } /* * Can't do DGAP_UNLOCK here, as we don't have Loading @@ -1228,9 +1218,8 @@ static void dgap_poll_handler(ulong dummy) new_time = dgap_poll_time - jiffies; if ((ulong) new_time >= 2 * dgap_poll_tick) { if ((ulong) new_time >= 2 * dgap_poll_tick) dgap_poll_time = jiffies + dgap_jiffies_from_ms(dgap_poll_tick); } dgap_poll_timer.function = dgap_poll_handler; dgap_poll_timer.data = 0; Loading Loading @@ -1285,9 +1274,8 @@ static void dgap_init_globals(void) dgap_rawreadok = rawreadok; for (i = 0; i < MAXBOARDS; i++) { for (i = 0; i < MAXBOARDS; i++) dgap_Board[i] = NULL; } init_timer( &dgap_poll_timer ); Loading Loading @@ -1469,13 +1457,11 @@ static int dgap_tty_init(struct board_t *brd) brd->nasync = dgap_config_get_number_of_ports(brd); if (!brd->nasync) { if (!brd->nasync) brd->nasync = brd->maxports; } if (brd->nasync > brd->maxports) { if (brd->nasync > brd->maxports) brd->nasync = brd->maxports; } if (true_count != brd->nasync) { if ((brd->type == PPCM) && (true_count == 64)) Loading Loading @@ -1552,8 +1538,7 @@ static int dgap_tty_init(struct board_t *brd) ch->ch_dsr = DM_CD; ch->ch_cd = DM_DSR; ch->ch_digi.digi_flags |= DIGI_ALTPIN; } else { } else { ch->ch_cd = DM_CD; ch->ch_dsr = DM_DSR; } Loading Loading @@ -1731,9 +1716,8 @@ static void dgap_sniff_nowait_nolock(struct channel_t *ch, uchar *text, uchar *b * We *cannot* sleep here waiting for space, because this * function was probably called by the interrupt/timer routines! */ if (n == 0) { if (n == 0) return; } /* * Copy as much data as will fit. Loading Loading @@ -1814,9 +1798,8 @@ static void dgap_input(struct channel_t *ch) tp = ch->ch_tun.un_tty; bs = ch->ch_bs; if (!bs) { if (!bs) return; } bd = ch->ch_bd; if(!bd || bd->magic != DGAP_BOARD_MAGIC) Loading Loading @@ -1974,8 +1957,7 @@ static void dgap_input(struct channel_t *ch) 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 { } else { len = tty_buffer_request_room(tp->port, len); tty_insert_flip_string(tp->port, ch->ch_bd->flipbuf, len); } Loading Loading @@ -2015,8 +1997,7 @@ static void dgap_carrier(struct channel_t *ch) if (ch->ch_digi.digi_flags & DIGI_ALTPIN) { ch->ch_dsr = DM_CD; ch->ch_cd = DM_DSR; } else { } else { ch->ch_dsr = DM_DSR; ch->ch_cd = DM_CD; } Loading @@ -2024,13 +2005,11 @@ static void dgap_carrier(struct channel_t *ch) if (ch->ch_mistat & D_CD(ch)) phys_carrier = 1; if (ch->ch_digi.digi_flags & DIGI_FORCEDCD) { if (ch->ch_digi.digi_flags & DIGI_FORCEDCD) virt_carrier = 1; } if (ch->ch_c_cflag & CLOCAL) { if (ch->ch_c_cflag & CLOCAL) virt_carrier = 1; } /* * Test for a VIRTUAL carrier transition to HIGH. Loading Loading @@ -2069,9 +2048,9 @@ static void dgap_carrier(struct channel_t *ch) * matter... it really only means "ignore carrier state", not * "make pretend that carrier is there". */ if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) && (phys_carrier == 0)) { if ((virt_carrier == 0) && ((ch->ch_flags & CH_CD) != 0) && (phys_carrier == 0)) { /* * When carrier drops: Loading Loading @@ -2138,15 +2117,13 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) major = MAJOR(tty_devnum(tty)); minor = MINOR(tty_devnum(tty)); if (major > 255) { if (major > 255) return -ENXIO; } /* Get board pointer from our array of majors we have allocated */ brd = dgap_BoardsByMajor[major]; if (!brd) { if (!brd) return -ENXIO; } /* * If board is not yet up to a state of READY, go to Loading @@ -2155,9 +2132,8 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) rc = wait_event_interruptible(brd->state_wait, (brd->state & BOARD_READY)); if (rc) { if (rc) return rc; } DGAP_LOCK(brd->bd_lock, lock_flags); Loading Loading @@ -2186,12 +2162,10 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) if (major == brd->dgap_Serial_Major) { un = &brd->channels[minor]->ch_tun; un->un_type = DGAP_SERIAL; } else if (major == brd->dgap_TransparentPrint_Major) { } else if (major == brd->dgap_TransparentPrint_Major) { un = &brd->channels[minor]->ch_pun; un->un_type = DGAP_PRINT; } else { } else { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(brd->bd_lock, lock_flags); return -ENXIO; Loading Loading @@ -2263,9 +2237,8 @@ static int dgap_tty_open(struct tty_struct *tty, struct file *file) rc = dgap_block_til_ready(tty, file, ch); if (!un->un_tty) { if (!un->un_tty) return -ENODEV; } /* No going back now, increment our unit and channel counters */ DGAP_LOCK(ch->ch_lock, lock_flags); Loading @@ -2291,14 +2264,13 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc uint old_flags = 0; int sleep_on_un_flags = 0; if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!tty || tty->magic != TTY_MAGIC || !file || !ch || ch->magic != DGAP_CHANNEL_MAGIC) return -ENXIO; } un = tty->driver_data; if (!un || un->magic != DGAP_UNIT_MAGIC) { if (!un || un->magic != DGAP_UNIT_MAGIC) return -ENXIO; } DGAP_LOCK(ch->ch_lock, lock_flags); Loading Loading @@ -2339,21 +2311,18 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc * 3) DCD (fake or real) is active. */ if (file->f_flags & O_NONBLOCK) { if (file->f_flags & O_NONBLOCK) break; } if (tty->flags & (1 << TTY_IO_ERROR)) { if (tty->flags & (1 << TTY_IO_ERROR)) break; } if (ch->ch_flags & CH_CD) break; if (ch->ch_flags & CH_FCAR) break; } else { } else { sleep_on_un_flags = 1; } Loading Loading @@ -2389,8 +2358,7 @@ static int dgap_block_til_ready(struct tty_struct *tty, struct file *file, struc if (sleep_on_un_flags) { retval = wait_event_interruptible(un->un_flags_wait, (old_flags != (ch->ch_tun.un_flags | ch->ch_pun.un_flags))); } else { } else { retval = wait_event_interruptible(ch->ch_flags_wait, (old_flags != ch->ch_flags)); } Loading Loading @@ -2642,8 +2610,7 @@ static int dgap_tty_chars_in_buffer(struct tty_struct *tty) if ((ttail == thead) && (tbusy == 0) && (chead == ctail)) { chars = 0; } else { } else { if (thead >= ttail) chars = thead - ttail; else Loading Loading @@ -2718,10 +2685,9 @@ static int dgap_wait_for_drain(struct tty_struct *tty) /* Go to sleep till we get woken up */ ret = wait_event_interruptible(un->un_flags_wait, ((un->un_flags & UN_EMPTY) == 0)); /* If ret is non-zero, user ctrl-c'ed us */ if (ret) { if (ret) break; } } DGAP_LOCK(ch->ch_lock, lock_flags); un->un_flags &= ~(UN_EMPTY); Loading Loading @@ -2772,12 +2738,10 @@ static int dgap_maxcps_room(struct tty_struct *tty, int bytes_available) /* buffer is empty */ ch->ch_cpstime = current_time; /* reset ch_cpstime */ cps_limit = ch->ch_digi.digi_bufsize; } else if (ch->ch_cpstime < buffer_time) { } else if (ch->ch_cpstime < buffer_time) { /* still room in the buffer */ cps_limit = ((buffer_time - ch->ch_cpstime) * ch->ch_digi.digi_maxcps) / HZ; } else { } else { /* no room in the buffer */ cps_limit = 0; } Loading Loading @@ -2868,8 +2832,7 @@ static int dgap_tty_write_room(struct tty_struct *tty) if (!(ch->ch_flags & CH_PRON)) ret -= ch->ch_digi.digi_onlen; ret -= ch->ch_digi.digi_offlen; } else { } else { if (ch->ch_flags & CH_PRON) ret -= ch->ch_digi.digi_offlen; } Loading Loading @@ -3025,9 +2988,8 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int * the board. */ /* we're allowed to block if it's from_user */ if (down_interruptible(&dgap_TmpWriteSem)) { if (down_interruptible(&dgap_TmpWriteSem)) return -EINTR; } if (copy_from_user(dgap_TmpWriteBuf, (const uchar __user *) buf, count)) { up(&dgap_TmpWriteSem); Loading Loading @@ -3097,8 +3059,7 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int if (tail != head) { un->un_flags |= UN_EMPTY; writeb(1, &(bs->iempty)); } else { } else { dgap_wmove(ch, ch->ch_digi.digi_offstr, (int) ch->ch_digi.digi_offlen); head = readw(&(bs->tx_head)) & tmask; Loading @@ -3115,10 +3076,8 @@ static int dgap_tty_write(struct tty_struct *tty, const unsigned char *buf, int if (from_user) { DGAP_UNLOCK(ch->ch_lock, lock_flags); up(&dgap_TmpWriteSem); } else { } else DGAP_UNLOCK(ch->ch_lock, lock_flags); } return count; } Loading Loading @@ -3346,15 +3305,12 @@ static void dgap_tty_send_xchar(struct tty_struct *tty, char c) * by hand... */ #if 0 if (c == STOP_CHAR(tty)) { if (c == STOP_CHAR(tty)) dgap_cmdw(ch, RPAUSE, 0, 0); } else if (c == START_CHAR(tty)) { else if (c == START_CHAR(tty)) dgap_cmdw(ch, RRESUME, 0, 0); } else { else dgap_wmove(ch, &c, 1); } #else dgap_wmove(ch, &c, 1); #endif Loading Loading @@ -3474,19 +3430,15 @@ static int dgap_set_modem_info(struct tty_struct *tty, unsigned int command, uns case TIOCMSET: ch->ch_mforce = D_DTR(ch)|D_RTS(ch); if (arg & TIOCM_RTS) { if (arg & TIOCM_RTS) ch->ch_mval |= D_RTS(ch); } else { else ch->ch_mval &= ~(D_RTS(ch)); } if (arg & TIOCM_DTR) { if (arg & TIOCM_DTR) ch->ch_mval |= (D_DTR(ch)); } else { else ch->ch_mval &= ~(D_DTR(ch)); } break; Loading Loading @@ -4146,9 +4098,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); Loading @@ -4158,9 +4109,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, DGAP_LOCK(bd->bd_lock, lock_flags); DGAP_LOCK(ch->ch_lock, lock_flags2); if(((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) { if (((cmd == TCSBRK) && (!arg)) || (cmd == TCSBRKP)) dgap_cmdw(ch, SBREAK, (u16) SBREAK_TIME, 0); } DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); Loading @@ -4178,9 +4128,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); if (rc) Loading @@ -4206,9 +4155,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, rc = tty_check_change(tty); DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); if (rc) { if (rc) return rc; } rc = dgap_wait_for_drain(tty); if (rc) Loading Loading @@ -4432,10 +4380,8 @@ static int dgap_tty_ioctl(struct tty_struct *tty, unsigned int cmd, return -EINTR; DGAP_LOCK(bd->bd_lock, lock_flags); DGAP_LOCK(ch->ch_lock, lock_flags2); } else { } else tty_ldisc_flush(tty); } /* fall thru */ case DIGI_SETA: Loading Loading @@ -4735,9 +4681,9 @@ static void dgap_do_reset_board(struct board_t *brd) u32 check2; int i = 0; if (!brd || (brd->magic != DGAP_BOARD_MAGIC) || !brd->re_map_membase || !brd->re_map_port) { if (!brd || (brd->magic != DGAP_BOARD_MAGIC) || !brd->re_map_membase || !brd->re_map_port) return; } /* FEPRST does not vary among supported boards */ writeb(FEPRST, brd->re_map_port); Loading Loading @@ -4945,9 +4891,8 @@ static void dgap_poll_tasklet(unsigned long data) return; } if (!bd->nasync) { if (!bd->nasync) goto out; } eaddr = (struct ev_t *) (vaddr + EVBUF); Loading @@ -4968,9 +4913,8 @@ static void dgap_poll_tasklet(unsigned long data) /* * If board is doing interrupts, ACK the interrupt. */ if (bd && bd->intr_running) { if (bd && bd->intr_running) readb(bd->re_map_port + 2); } DGAP_UNLOCK(bd->bd_lock, lock_flags); return; Loading @@ -4988,9 +4932,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Move to next state */ if (bd->state == FINISHED_RESET) { if (bd->state == FINISHED_RESET) bd->state = NEED_CONFIG; } if (bd->state == NEED_CONFIG) { /* Loading @@ -5004,25 +4947,21 @@ static void dgap_poll_tasklet(unsigned long data) * back, and this is a PAPORT8 board, retry with a * PAPORT4 attempt as well. */ if (bd->type == PAPORT8 && !bd->bd_config) { if (bd->type == PAPORT8 && !bd->bd_config) bd->bd_config = dgap_find_config(PAPORT4, bd->pci_bus, bd->pci_slot); } /* * Register the ttys (if any) into the kernel. */ if (bd->bd_config) { if (bd->bd_config) bd->state = FINISHED_CONFIG; } else { else bd->state = CONFIG_NOT_FOUND; } } /* Move to next state */ if (bd->state == FINISHED_CONFIG) { if (bd->state == FINISHED_CONFIG) bd->state = NEED_DEVICE_CREATION; } /* Move to next state */ if (bd->state == NEED_DEVICE_CREATION) { Loading @@ -5038,9 +4977,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Move to next state */ if (bd->state == FINISHED_DEVICE_CREATION) { if (bd->state == FINISHED_DEVICE_CREATION) bd->state = NEED_BIOS_LOAD; } /* Move to next state */ if (bd->state == NEED_BIOS_LOAD) { Loading @@ -5056,9 +4994,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Wait for BIOS to test board... */ if (bd->state == WAIT_BIOS_LOAD) { if (bd->state == WAIT_BIOS_LOAD) dgap_do_wait_for_bios(bd); } /* Move to next state */ if (bd->state == FINISHED_BIOS_LOAD) { Loading @@ -5076,10 +5013,8 @@ static void dgap_poll_tasklet(unsigned long data) } /* Wait for FEP to load on board... */ if (bd->state == WAIT_FEP_LOAD) { if (bd->state == WAIT_FEP_LOAD) dgap_do_wait_for_fep(bd); } /* Move to next state */ if (bd->state == FINISHED_FEP_LOAD) { Loading @@ -5093,8 +5028,7 @@ static void dgap_poll_tasklet(unsigned long data) dgap_tty_uninit(bd); bd->state = BOARD_FAILED; bd->dpastatus = BD_NOFEP; } else { } else { bd->state = NEED_PROC_CREATION; /* Loading Loading @@ -5370,11 +5304,10 @@ static void dgap_cmdw_ext(struct channel_t *ch, u16 cmd, u16 word, uint ncmds) * If the second part of the command won't fit, * put it at the beginning of the circular buffer. */ if (((head + 4) >= ((CMDMAX - CMDSTART)) || (head & 03))) { if (((head + 4) >= ((CMDMAX - CMDSTART)) || (head & 03))) writew((u16) word, (char *) (vaddr + CMDSTART)); } else { else writew((u16) word, (char *) (vaddr + head + CMDSTART + 4)); } head = (head + 8) & (CMDMAX - CMDSTART - 4); Loading Loading @@ -5433,9 +5366,9 @@ static void dgap_wmove(struct channel_t *ch, char *buf, uint cnt) /* * If pointers are out of range, just return. */ if ((cnt > ch->ch_tsize) || (unsigned)(head - ch->ch_tstart) >= ch->ch_tsize) { if ((cnt > ch->ch_tsize) || (unsigned)(head - ch->ch_tstart) >= ch->ch_tsize) return; } /* * If the write wraps over the top of the circular buffer, Loading Loading @@ -5474,13 +5407,11 @@ static uint dgap_get_custom_baud(struct channel_t *ch) ulong offset = 0; uint value = 0; if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) return 0; } if (!ch->ch_bd || ch->ch_bd->magic != DGAP_BOARD_MAGIC) { if (!ch->ch_bd || ch->ch_bd->magic != DGAP_BOARD_MAGIC) return 0; } if (!(ch->ch_bd->bd_flags & BD_FEP5PLUS)) return 0; Loading Loading @@ -5657,9 +5588,10 @@ static int dgap_param(struct tty_struct *tty) jindex = baud; if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && (jindex < 16)) { if ((iindex >= 0) && (iindex < 4) && (jindex >= 0) && (jindex < 16)) baud = bauds[iindex][jindex]; } else else baud = 0; if (baud == 0) Loading Loading @@ -5779,9 +5711,8 @@ static int dgap_param(struct tty_struct *tty) */ hflow = 0; if (ch->ch_c_cflag & CRTSCTS) { if (ch->ch_c_cflag & CRTSCTS) hflow |= (D_RTS(ch) | D_CTS(ch)); } if (ch->ch_digi.digi_flags & RTSPACE) hflow |= D_RTS(ch); if (ch->ch_digi.digi_flags & DTRPACE) Loading @@ -5806,12 +5737,10 @@ static int dgap_param(struct tty_struct *tty) */ if (bd->bd_flags & BD_FEP5PLUS) { u16 hflow2 = 0; if (ch->ch_digi.digi_flags & DIGI_RTS_TOGGLE) { if (ch->ch_digi.digi_flags & DIGI_RTS_TOGGLE) hflow2 |= (D_RTS(ch)); } if (ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) { if (ch->ch_digi.digi_flags & DIGI_DTR_TOGGLE) hflow2 |= (D_DTR(ch)); } dgap_cmdw_ext(ch, 0xff03, hflow2, 0); } Loading Loading @@ -5890,10 +5819,10 @@ static void dgap_parity_scan(struct channel_t *ch, unsigned char *cbuf, unsigned case 0: /* No FF seen yet */ if (c == (unsigned char) '\377') { if (c == (unsigned char) '\377') /* delete this character from stream */ ch->pscan_state = 1; } else { else { *cout++ = c; *fout++ = TTY_NORMAL; count += 1; Loading Loading @@ -5925,8 +5854,7 @@ static void dgap_parity_scan(struct channel_t *ch, unsigned char *cbuf, unsigned if (c == 0x0) { ch->ch_err_break++; *fout++ = TTY_BREAK; } else { } else { ch->ch_err_parity++; *fout++ = TTY_PARITY; } Loading Loading @@ -6016,15 +5944,13 @@ static int dgap_event(struct board_t *bd) if (port >= bd->nasync) goto next; if (!(reason & (IFMODEM | IFBREAK | IFTLW | IFTEM | IFDATA))) { if (!(reason & (IFMODEM | IFBREAK | IFTLW | IFTEM | IFDATA))) goto next; } ch = bd->channels[port]; if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) { if (!ch || ch->magic != DGAP_CHANNEL_MAGIC) goto next; } /* * If we have made it here, the event was valid. Loading Loading @@ -6102,8 +6028,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_tun.un_flags & UN_ISOPEN) { if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_tun.un_tty->ldisc->ops->write_wakeup)(ch->ch_tun.un_tty); Loading @@ -6120,8 +6045,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_pun.un_flags & UN_ISOPEN) { if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty); Loading @@ -6148,8 +6072,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_tun.un_flags & UN_ISOPEN) { if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { ch->ch_tun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); Loading @@ -6167,8 +6090,7 @@ static int dgap_event(struct board_t *bd) if (ch->ch_pun.un_flags & UN_ISOPEN) { if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { ch->ch_pun.un_tty->ldisc->ops->write_wakeup) { DGAP_UNLOCK(ch->ch_lock, lock_flags2); DGAP_UNLOCK(bd->bd_lock, lock_flags); (ch->ch_pun.un_tty->ldisc->ops->write_wakeup)(ch->ch_pun.un_tty); Loading Loading @@ -6271,10 +6193,9 @@ static void dgap_create_driver_sysfiles(struct pci_driver *dgap_driver) rc |= driver_create_file(driverfs, &driver_attr_pollrate); rc |= driver_create_file(driverfs, &driver_attr_pollcounter); rc |= driver_create_file(driverfs, &driver_attr_state); if (rc) { if (rc) printk(KERN_ERR "DGAP: sysfs driver_create_file failed!\n"); } } static void dgap_remove_driver_sysfiles(struct pci_driver *dgap_driver) Loading Loading @@ -6345,7 +6266,7 @@ static ssize_t dgap_ports_msignals_show(struct device *p, struct device_attribut DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { if (bd->channels[i]->ch_open_count) { if (bd->channels[i]->ch_open_count) count += snprintf(buf + count, PAGE_SIZE - count, "%d %s %s %s %s %s %s\n", bd->channels[i]->ch_portnum, (bd->channels[i]->ch_mostat & UART_MCR_RTS) ? "RTS" : "", Loading @@ -6354,11 +6275,10 @@ static ssize_t dgap_ports_msignals_show(struct device *p, struct device_attribut (bd->channels[i]->ch_mistat & UART_MSR_DSR) ? "DSR" : "", (bd->channels[i]->ch_mistat & UART_MSR_DCD) ? "DCD" : "", (bd->channels[i]->ch_mistat & UART_MSR_RI) ? "RI" : ""); } else { else count += snprintf(buf + count, PAGE_SIZE - count, "%d\n", bd->channels[i]->ch_portnum); } } return count; } static DEVICE_ATTR(ports_msignals, S_IRUSR, dgap_ports_msignals_show, NULL); Loading @@ -6372,10 +6292,9 @@ static ssize_t dgap_ports_iflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_iflag); } return count; } static DEVICE_ATTR(ports_iflag, S_IRUSR, dgap_ports_iflag_show, NULL); Loading @@ -6389,10 +6308,9 @@ static ssize_t dgap_ports_cflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_cflag); } return count; } static DEVICE_ATTR(ports_cflag, S_IRUSR, dgap_ports_cflag_show, NULL); Loading @@ -6406,10 +6324,9 @@ static ssize_t dgap_ports_oflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_oflag); } return count; } static DEVICE_ATTR(ports_oflag, S_IRUSR, dgap_ports_oflag_show, NULL); Loading @@ -6423,10 +6340,9 @@ static ssize_t dgap_ports_lflag_show(struct device *p, struct device_attribute * DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_c_lflag); } return count; } static DEVICE_ATTR(ports_lflag, S_IRUSR, dgap_ports_lflag_show, NULL); Loading @@ -6440,10 +6356,9 @@ static ssize_t dgap_ports_digi_flag_show(struct device *p, struct device_attribu DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %x\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_digi.digi_flags); } return count; } static DEVICE_ATTR(ports_digi_flag, S_IRUSR, dgap_ports_digi_flag_show, NULL); Loading @@ -6457,10 +6372,9 @@ static ssize_t dgap_ports_rxcount_show(struct device *p, struct device_attribute DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %ld\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_rxcount); } return count; } static DEVICE_ATTR(ports_rxcount, S_IRUSR, dgap_ports_rxcount_show, NULL); Loading @@ -6474,10 +6388,9 @@ static ssize_t dgap_ports_txcount_show(struct device *p, struct device_attribute DGAP_VERIFY_BOARD(p, bd); for (i = 0; i < bd->nasync; i++) { for (i = 0; i < bd->nasync; i++) count += snprintf(buf + count, PAGE_SIZE - count, "%d %ld\n", bd->channels[i]->ch_portnum, bd->channels[i]->ch_txcount); } return count; } static DEVICE_ATTR(ports_txcount, S_IRUSR, dgap_ports_txcount_show, NULL); Loading @@ -6501,10 +6414,9 @@ static void dgap_create_ports_sysfiles(struct board_t *bd) rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_digi_flag); rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_rxcount); rc |= device_create_file(&(bd->pdev->dev), &dev_attr_ports_txcount); if (rc) { if (rc) printk(KERN_ERR "DGAP: sysfs device_create_file failed!\n"); } } /* removes all the sys files created for that port */ Loading Loading @@ -6831,31 +6743,27 @@ static ssize_t dgap_tty_name_show(struct device *d, struct device_attribute *att if (strstr(cptr->u.ttyname, "tty")) { ptr1 = cptr->u.ttyname; ptr1 += 3; } else { } else ptr1 = cptr->u.ttyname; } for (i = 0; i < dgap_config_get_number_of_ports(bd); i++) { if (cn == i) { if (cn == i) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", ptr1, i + starto); } } } if (cptr->type == CNODE) { for (i = 0; i < cptr->u.conc.nport; i++) { if (cn == (i + ncount)) { if (cn == (i + ncount)) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", cptr->u.conc.id, i + (cptr->u.conc.v_start ? cptr->u.conc.start : 1)); } } ncount += cptr->u.conc.nport; } Loading @@ -6863,13 +6771,12 @@ static ssize_t dgap_tty_name_show(struct device *d, struct device_attribute *att if (cptr->type == MNODE) { for (i = 0; i < cptr->u.module.nport; i++) { if (cn == (i + ncount)) { if (cn == (i + ncount)) return snprintf(buf, PAGE_SIZE, "%s%s%02d\n", (un->un_type == DGAP_PRINT) ? "pr" : "tty", cptr->u.module.id, i + (cptr->u.module.v_start ? cptr->u.module.start : 1)); } } ncount += cptr->u.module.nport; Loading Loading @@ -6942,9 +6849,8 @@ static int dgap_parsefile(char **in, int Remove) brd = line = conc = NULL; /* perhaps we are adding to an existing list? */ while (p->next != NULL) { while (p->next != NULL) p = p->next; } /* file must start with a BEGIN */ while ( (rc = dgap_gettok(in,p)) != BEGIN ) { Loading Loading @@ -7692,8 +7598,7 @@ static char *dgap_sindex (char *string, char *group) if (*ptr == '\0') return string; } } else { } else { for (; *string; string++) { for (ptr = group; *ptr; ptr++) { if (*ptr == *string) Loading @@ -7718,14 +7623,12 @@ static int dgap_gettok(char **in, struct cnode *p) w = dgap_getword(in); snprintf(dgap_cword, MAXCWORD, "%s", w); for (t = dgap_tlist; t->token != 0; t++) { if ( !strcmp(w, t->string)) { if ( !strcmp(w, t->string)) return t->token; } } dgap_err("board !!type not specified"); return 1; } else { } else { while ( (w = dgap_getword(in)) != NULL ) { snprintf(dgap_cword, MAXCWORD, "%s", w); for (t = dgap_tlist; t->token != 0; t++) { Loading Loading @@ -7857,9 +7760,10 @@ static int dgap_checknode(struct cnode *p) static char *dgap_savestring(char *s) { char *p; if ( (p = kmalloc(strlen(s) + 1, GFP_ATOMIC) ) != NULL) { p = kmalloc(strlen(s) + 1, GFP_ATOMIC); if (p) strcpy(p, s); } return p; } Loading Loading @@ -7937,12 +7841,12 @@ static struct cnode *dgap_find_config(int type, int bus, int slot) if (p->u.board.type == type) { if (p->u.board.v_pcibus && p->u.board.pcibus != bus) { if (p->u.board.v_pcibus && p->u.board.pcibus != bus) continue; } if (p->u.board.v_pcislot && p->u.board.pcislot != slot) { if (p->u.board.v_pcislot && p->u.board.pcislot != slot) continue; } found = p; /* Loading