Lines Matching refs:card
207 struct isi_board *card; member
237 static int lock_card(struct isi_board *card) in lock_card() argument
239 unsigned long base = card->base; in lock_card()
243 spin_lock_irqsave(&card->card_lock, card->flags); in lock_card()
249 spin_unlock_irqrestore(&card->card_lock, card->flags); in lock_card()
252 pr_warn("Failed to lock Card (0x%lx)\n", card->base); in lock_card()
257 static void unlock_card(struct isi_board *card) in unlock_card() argument
259 spin_unlock_irqrestore(&card->card_lock, card->flags); in unlock_card()
269 struct isi_board *card = port->card; in raise_dtr() local
270 unsigned long base = card->base; in raise_dtr()
276 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in raise_dtr()
285 struct isi_board *card = port->card; in drop_dtr() local
286 unsigned long base = card->base; in drop_dtr()
292 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in drop_dtr()
301 struct isi_board *card = port->card; in raise_rts() local
302 unsigned long base = card->base; in raise_rts()
308 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in raise_rts()
317 struct isi_board *card = port->card; in drop_rts() local
318 unsigned long base = card->base; in drop_rts()
324 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in drop_rts()
335 struct isi_board *card = ip->card; in isicom_dtr_rts() local
336 unsigned long base = card->base; in isicom_dtr_rts()
339 if (!lock_card(card)) in isicom_dtr_rts()
343 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in isicom_dtr_rts()
348 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in isicom_dtr_rts()
353 unlock_card(card); in isicom_dtr_rts()
359 struct isi_board *card = port->card; in drop_dtr_rts() local
360 unsigned long base = card->base; in drop_dtr_rts()
366 outw(0x8000 | (channel << card->shift_count) | 0x02, base); in drop_dtr_rts()
405 short count = (BOARD_COUNT-1), card; in isicom_tx() local
411 card = (prev_card + 1) & 0x0003; in isicom_tx()
413 if (isi_card[card].status & BOARD_ACTIVE) in isicom_tx()
415 card = (card + 1) & 0x0003; in isicom_tx()
417 if (!(isi_card[card].status & BOARD_ACTIVE)) in isicom_tx()
420 prev_card = card; in isicom_tx()
422 count = isi_card[card].port_count; in isicom_tx()
423 port = isi_card[card].ports; in isicom_tx()
424 base = isi_card[card].base; in isicom_tx()
426 spin_lock_irqsave(&isi_card[card].card_lock, flags); in isicom_tx()
454 outw((port->channel << isi_card[card].shift_count) | txcount, in isicom_tx()
505 spin_unlock_irqrestore(&isi_card[card].card_lock, flags); in isicom_tx()
517 struct isi_board *card = dev_id; in isicom_interrupt() local
525 if (!card || !(card->status & FIRMWARE_LOADED)) in isicom_interrupt()
528 base = card->base; in isicom_interrupt()
534 spin_lock(&card->card_lock); in isicom_interrupt()
545 channel = (header & 0x7800) >> card->shift_count; in isicom_interrupt()
548 if (channel + 1 > card->port_count) { in isicom_interrupt()
552 spin_unlock(&card->card_lock); in isicom_interrupt()
555 port = card->ports + channel; in isicom_interrupt()
558 spin_unlock(&card->card_lock); in isicom_interrupt()
572 spin_unlock(&card->card_lock); in isicom_interrupt()
677 spin_unlock(&card->card_lock); in isicom_interrupt()
686 struct isi_board *card = port->card; in isicom_config_port() local
688 unsigned long base = card->base; in isicom_config_port()
690 shift_count = card->shift_count; in isicom_config_port()
787 card->port_status |= (1 << channel); in isicom_config_port()
788 outw(card->port_status, base + 0x02); in isicom_config_port()
814 struct isi_board *card = port->card; in isicom_activate() local
820 spin_lock_irqsave(&card->card_lock, flags); in isicom_activate()
821 isicom_setup_board(card); in isicom_activate()
826 if (WaitTillCardIsFree(card->base) == 0) { in isicom_activate()
827 outw(0x8000 | (port->channel << card->shift_count) | 0x02, in isicom_activate()
828 card->base); in isicom_activate()
829 outw(((ISICOM_KILLTX | ISICOM_KILLRX) << 8) | 0x06, card->base); in isicom_activate()
830 InterruptTheCard(card->base); in isicom_activate()
833 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_activate()
847 struct isi_board *card; in isicom_find_port() local
852 card = &isi_card[board]; in isicom_find_port()
854 if (!(card->status & FIRMWARE_LOADED)) in isicom_find_port()
858 if (line > ((board * 16) + card->port_count - 1)) in isicom_find_port()
887 struct isi_board *card = port->card; in isicom_shutdown_port() local
889 if (--card->count < 0) { in isicom_shutdown_port()
891 __func__, card->base, card->count); in isicom_shutdown_port()
892 card->count = 0; in isicom_shutdown_port()
895 if (!card->count) in isicom_shutdown_port()
896 card->status &= BOARD_ACTIVE; in isicom_shutdown_port()
902 struct isi_board *card = port->card; in isicom_flush_buffer() local
908 spin_lock_irqsave(&card->card_lock, flags); in isicom_flush_buffer()
910 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_flush_buffer()
918 struct isi_board *card = ip->card; in isicom_shutdown() local
923 spin_lock_irqsave(&card->card_lock, flags); in isicom_shutdown()
924 card->port_status &= ~(1 << ip->channel); in isicom_shutdown()
925 outw(card->port_status, card->base + 0x02); in isicom_shutdown()
927 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_shutdown()
950 struct isi_board *card = port->card; in isicom_write() local
957 spin_lock_irqsave(&card->card_lock, flags); in isicom_write()
975 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_write()
983 struct isi_board *card = port->card; in isicom_put_char() local
989 spin_lock_irqsave(&card->card_lock, flags); in isicom_put_char()
991 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_put_char()
998 spin_unlock_irqrestore(&card->card_lock, flags); in isicom_put_char()
1047 struct isi_board *card = port->card; in isicom_send_break() local
1048 unsigned long base = card->base; in isicom_send_break()
1053 if (!lock_card(card)) in isicom_send_break()
1056 outw(0x8000 | ((port->channel) << (card->shift_count)) | 0x3, base); in isicom_send_break()
1061 unlock_card(card); in isicom_send_break()
1091 spin_lock_irqsave(&port->card->card_lock, flags); in isicom_tiocmset()
1101 spin_unlock_irqrestore(&port->card->card_lock, flags); in isicom_tiocmset()
1138 spin_lock_irqsave(&port->card->card_lock, flags); in isicom_set_serial_info()
1140 spin_unlock_irqrestore(&port->card->card_lock, flags); in isicom_set_serial_info()
1155 out_info.port = port->card->base; in isicom_get_serial_info()
1156 out_info.irq = port->card->irq; in isicom_get_serial_info()
1203 spin_lock_irqsave(&port->card->card_lock, flags); in isicom_set_termios()
1205 spin_unlock_irqrestore(&port->card->card_lock, flags); in isicom_set_termios()
1218 struct isi_board *card = port->card; in isicom_throttle() local
1224 card->port_status &= ~(1 << port->channel); in isicom_throttle()
1225 outw(card->port_status, card->base + 0x02); in isicom_throttle()
1232 struct isi_board *card = port->card; in isicom_unthrottle() local
1238 card->port_status |= (1 << port->channel); in isicom_unthrottle()
1239 outw(card->port_status, card->base + 0x02); in isicom_unthrottle()
1311 const unsigned int card, unsigned int *signature) in reset_card() argument
1318 dev_dbg(&pdev->dev, "ISILoad:Resetting Card%d at 0x%lx\n", card + 1, in reset_card()
1334 "bad I/O Port Address 0x%lx).\n", card + 1, base); in reset_card()
1346 card + 1); in reset_card()
1666 port->card = &isi_card[idx]; in isicom_init()