Lines Matching full:card

3  * SDL Inc. RISCom/N2 synchronous serial card driver for Linux
91 struct card_s *card; member
123 #define sca_reg(reg, card) (0x8000 | (card)->io | \ argument
125 #define sca_in(reg, card) inb(sca_reg(reg, card)) argument
126 #define sca_out(value, reg, card) outb(value, sca_reg(reg, card)) argument
127 #define sca_inw(reg, card) inw(sca_reg(reg, card)) argument
128 #define sca_outw(value, reg, card) outw(value, sca_reg(reg, card)) argument
130 #define port_to_card(port) ((port)->card)
133 #define winsize(card) (USE_WINDOWSIZE) argument
134 #define winbase(card) ((card)->winbase) argument
135 #define get_port(card, port) ((card)->ports[port].valid ? \ argument
136 &(card)->ports[port] : NULL)
138 static __inline__ u8 sca_get_page(card_t *card) in sca_get_page() argument
140 return inb(card->io + N2_PSR) & PSR_PAGEBITS; in sca_get_page()
143 static __inline__ void openwin(card_t *card, u8 page) in openwin() argument
145 u8 psr = inb(card->io + N2_PSR); in openwin()
147 outb((psr & ~PSR_PAGEBITS) | page, card->io + N2_PSR); in openwin()
154 card_t *card = port->card; in n2_set_iface() local
155 int io = card->io; in n2_set_iface()
189 sca_out(rxs, msci + RXS, card); in n2_set_iface()
190 sca_out(txs, msci + TXS, card); in n2_set_iface()
197 int io = port->card->io; in n2_open()
219 int io = port->card->io; in n2_close()
285 static void n2_destroy_card(card_t *card) in n2_destroy_card() argument
290 if (card->ports[cnt].card) { in n2_destroy_card()
291 struct net_device *dev = port_to_dev(&card->ports[cnt]); in n2_destroy_card()
296 if (card->irq) in n2_destroy_card()
297 free_irq(card->irq, card); in n2_destroy_card()
299 if (card->winbase) { in n2_destroy_card()
300 iounmap(card->winbase); in n2_destroy_card()
301 release_mem_region(card->phy_winbase, USE_WINDOWSIZE); in n2_destroy_card()
304 if (card->io) in n2_destroy_card()
305 release_region(card->io, N2_IOPORTS); in n2_destroy_card()
306 if (card->ports[0].dev) in n2_destroy_card()
307 free_netdev(card->ports[0].dev); in n2_destroy_card()
308 if (card->ports[1].dev) in n2_destroy_card()
309 free_netdev(card->ports[1].dev); in n2_destroy_card()
310 kfree(card); in n2_destroy_card()
324 card_t *card; in n2_run() local
343 card = kzalloc(sizeof(card_t), GFP_KERNEL); in n2_run()
344 if (!card) in n2_run()
347 card->ports[0].dev = alloc_hdlcdev(&card->ports[0]); in n2_run()
348 card->ports[1].dev = alloc_hdlcdev(&card->ports[1]); in n2_run()
349 if (!card->ports[0].dev || !card->ports[1].dev) { in n2_run()
351 n2_destroy_card(card); in n2_run()
357 n2_destroy_card(card); in n2_run()
360 card->io = io; in n2_run()
362 if (request_irq(irq, sca_intr, 0, devname, card)) { in n2_run()
364 n2_destroy_card(card); in n2_run()
367 card->irq = irq; in n2_run()
371 n2_destroy_card(card); in n2_run()
374 card->phy_winbase = winbase; in n2_run()
375 card->winbase = ioremap(winbase, USE_WINDOWSIZE); in n2_run()
376 if (!card->winbase) { in n2_run()
378 n2_destroy_card(card); in n2_run()
400 n2_destroy_card(card); in n2_run()
407 card->ram_size = sca_detect_ram(card, card->winbase, MAX_RAM_SIZE); in n2_run()
410 i = card->ram_size / ((valid0 + valid1) * (sizeof(pkt_desc) + in n2_run()
413 card->tx_ring_buffers = min(i / 2, MAX_TX_BUFFERS); in n2_run()
414 card->rx_ring_buffers = i - card->tx_ring_buffers; in n2_run()
416 card->buff_offset = (valid0 + valid1) * sizeof(pkt_desc) * in n2_run()
417 (card->tx_ring_buffers + card->rx_ring_buffers); in n2_run()
420 card->ram_size / 1024, card->irq, in n2_run()
421 card->tx_ring_buffers, card->rx_ring_buffers); in n2_run()
423 if (card->tx_ring_buffers < 1) { in n2_run()
425 n2_destroy_card(card); in n2_run()
433 sca_init(card, 0); in n2_run()
435 port_t *port = &card->ports[cnt]; in n2_run()
457 port->card = card; in n2_run()
461 port->card = NULL; in n2_run()
462 n2_destroy_card(card); in n2_run()
470 *new_card = card; in n2_run()
471 new_card = &card->next_card; in n2_run()
480 pr_info("no card initialized\n"); in n2_init()
529 card_t *card = first_card; in n2_cleanup() local
531 while (card) { in n2_cleanup()
532 card_t *ptr = card; in n2_cleanup()
534 card = card->next_card; in n2_cleanup()