Lines Matching full:card
3 * Moxa C101 synchronous serial card driver for Linux
80 #define sca_in(reg, card) readb((card)->win0base + C101_SCA + (reg)) argument
81 #define sca_out(value, reg, card) writeb(value, (card)->win0base + C101_SCA + (reg)) argument
82 #define sca_inw(reg, card) readw((card)->win0base + C101_SCA + (reg)) argument
85 #define sca_outw(value, reg, card) do { \ argument
86 writeb(value & 0xFF, (card)->win0base + C101_SCA + (reg)); \
87 writeb((value >> 8) & 0xFF, (card)->win0base + C101_SCA + (reg + 1));\
93 #define winsize(card) (C101_WINDOW_SIZE) argument
94 #define win0base(card) ((card)->win0base) argument
95 #define winbase(card) ((card)->win0base + 0x2000) argument
96 #define get_port(card, port) (card) argument
99 static inline u8 sca_get_page(card_t *card) in sca_get_page() argument
101 return card->page; in sca_get_page()
104 static inline void openwin(card_t *card, u8 page) in openwin() argument
106 card->page = page; in openwin()
107 writeb(page, card->win0base + C101_PAGE); in openwin()
274 static void c101_destroy_card(card_t *card) in c101_destroy_card() argument
276 readb(card->win0base + C101_PAGE); /* Resets SCA? */ in c101_destroy_card()
278 if (card->irq) in c101_destroy_card()
279 free_irq(card->irq, card); in c101_destroy_card()
281 if (card->win0base) { in c101_destroy_card()
282 iounmap(card->win0base); in c101_destroy_card()
283 release_mem_region(card->phy_winbase, C101_MAPPED_RAM_SIZE); in c101_destroy_card()
286 free_netdev(card->dev); in c101_destroy_card()
288 kfree(card); in c101_destroy_card()
303 card_t *card; in c101_run() local
316 card = kzalloc_obj(card_t); in c101_run()
317 if (!card) in c101_run()
320 card->dev = alloc_hdlcdev(card); in c101_run()
321 if (!card->dev) { in c101_run()
323 kfree(card); in c101_run()
327 if (request_irq(irq, sca_intr, 0, devname, card)) { in c101_run()
329 c101_destroy_card(card); in c101_run()
332 card->irq = irq; in c101_run()
336 c101_destroy_card(card); in c101_run()
339 card->phy_winbase = winbase; in c101_run()
340 card->win0base = ioremap(winbase, C101_MAPPED_RAM_SIZE); in c101_run()
341 if (!card->win0base) { in c101_run()
343 c101_destroy_card(card); in c101_run()
347 card->tx_ring_buffers = TX_RING_BUFFERS; in c101_run()
348 card->rx_ring_buffers = RX_RING_BUFFERS; in c101_run()
349 card->buff_offset = C101_WINDOW_SIZE; /* Bytes 1D00-1FFF reserved */ in c101_run()
351 readb(card->win0base + C101_PAGE); /* Resets SCA? */ in c101_run()
353 writeb(0, card->win0base + C101_PAGE); in c101_run()
354 writeb(0, card->win0base + C101_DTR); /* Power-up for RAM? */ in c101_run()
356 sca_init(card, 0); in c101_run()
358 dev = port_to_dev(card); in c101_run()
361 spin_lock_init(&card->lock); in c101_run()
369 card->settings.clock_type = CLOCK_EXT; in c101_run()
374 c101_destroy_card(card); in c101_run()
378 sca_init_port(card); /* Set up C101 memory */ in c101_run()
379 set_carrier(card); in c101_run()
382 card->irq, card->tx_ring_buffers, card->rx_ring_buffers); in c101_run()
384 *new_card = card; in c101_run()
385 new_card = &card->next_card; in c101_run()
393 pr_info("no card initialized\n"); in c101_init()
422 card_t *card = first_card; in c101_cleanup() local
424 while (card) { in c101_cleanup()
425 card_t *ptr = card; in c101_cleanup()
427 card = card->next_card; in c101_cleanup()