Lines Matching +full:reset +full:- +full:bps
1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * baycom_epp.c -- baycom epp radio modem driver.
7 * Copyright (C) 1998-2000
21 * removed some pre-2.2 kernel compatibility cruft
28 #include <linux/crc-ccitt.h>
45 /* --------------------------------------------------------------------- */
50 /* --------------------------------------------------------------------- */
56 static const char bc_drvinfo[] = KERN_INFO "baycom_epp: (C) 1998-2000 Thomas Sailer, HB9JNX/AE4WA\n"
59 /* --------------------------------------------------------------------- */
65 /* --------------------------------------------------------------------- */
149 /* ---------------------------------------------------------------------- */
168 unsigned int bps; member
208 /* --------------------------------------------------------------------- */
212 /* --------------------------------------------------------------------- */
222 /* --------------------------------------------------------------------- */
229 /*---------------------------------------------------------------------------*/
236 for (;len>0;len--)
244 /*---------------------------------------------------------------------------*/
251 /*---------------------------------------------------------------------------*/
258 /* ---------------------------------------------------------------------- */
260 #define tenms_to_flags(bc,tenms) ((tenms * bc->bitrate) / 800)
262 /* --------------------------------------------------------------------- */
271 bc->debug_vals.cur_intcnt++; in baycom_int_freq()
272 if (time_after_eq(cur_jiffies, bc->debug_vals.last_jiffies + HZ)) { in baycom_int_freq()
273 bc->debug_vals.last_jiffies = cur_jiffies; in baycom_int_freq()
274 bc->debug_vals.last_intcnt = bc->debug_vals.cur_intcnt; in baycom_int_freq()
275 bc->debug_vals.cur_intcnt = 0; in baycom_int_freq()
276 bc->debug_vals.last_pllcorr = bc->debug_vals.cur_pllcorr; in baycom_int_freq()
277 bc->debug_vals.cur_pllcorr = 0; in baycom_int_freq()
282 /* ---------------------------------------------------------------------- */
298 "-s", in eppconfig()
299 "-p", portarg, in eppconfig()
300 "-m", modearg, in eppconfig()
304 sprintf(modearg, "%sclk,%smodem,fclk=%d,bps=%d,divider=%d%s,extstat", in eppconfig()
305 bc->cfg.intclk ? "int" : "ext", in eppconfig()
306 bc->cfg.extmodem ? "ext" : "int", bc->cfg.fclk, bc->cfg.bps, in eppconfig()
307 (bc->cfg.fclk + 8 * bc->cfg.bps) / (16 * bc->cfg.bps), in eppconfig()
308 bc->cfg.loopback ? ",loopback" : ""); in eppconfig()
309 sprintf(portarg, "%ld", bc->pdev->port->base); in eppconfig()
310 printk(KERN_DEBUG "%s: %s -s -p %s -m %s\n", bc_drvname, eppconfig_path, portarg, modearg); in eppconfig()
315 /* ---------------------------------------------------------------------- */
331 bc->ch_params.tx_delay = data[1]; in do_kiss_params()
332 PKP("TX delay = %ums", 10 * bc->ch_params.tx_delay); in do_kiss_params()
335 bc->ch_params.ppersist = data[1]; in do_kiss_params()
336 PKP("p persistence = %u", bc->ch_params.ppersist); in do_kiss_params()
339 bc->ch_params.slottime = data[1]; in do_kiss_params()
340 PKP("slot time = %ums", bc->ch_params.slottime); in do_kiss_params()
343 bc->ch_params.tx_tail = data[1]; in do_kiss_params()
344 PKP("TX tail = %ums", bc->ch_params.tx_tail); in do_kiss_params()
347 bc->ch_params.fulldup = !!data[1]; in do_kiss_params()
348 PKP("%s duplex", bc->ch_params.fulldup ? "full" : "half"); in do_kiss_params()
356 /* --------------------------------------------------------------------- */
367 if (bc->hdlctx.bufcnt > 0) in encode_hdlc()
369 skb = bc->skb; in encode_hdlc()
372 bc->skb = NULL; in encode_hdlc()
373 pkt_len = skb->len-1; /* strip KISS byte */ in encode_hdlc()
374 wp = bc->hdlctx.buf; in encode_hdlc()
375 bp = skb->data+1; in encode_hdlc()
381 while (pkt_len > -2) { in encode_hdlc()
387 pkt_len--; in encode_hdlc()
393 bitbuf = (bitbuf & (((2 << j) << numbit) - 1)) | in encode_hdlc()
394 ((bitbuf & ~(((2 << j) << numbit) - 1)) << 1); in encode_hdlc()
402 numbit -= 8; in encode_hdlc()
410 numbit -= 8; in encode_hdlc()
412 bc->hdlctx.bufptr = bc->hdlctx.buf; in encode_hdlc()
413 bc->hdlctx.bufcnt = wp - bc->hdlctx.buf; in encode_hdlc()
415 bc->dev->stats.tx_packets++; in encode_hdlc()
418 /* ---------------------------------------------------------------------- */
422 struct parport *pp = bc->pdev->port; in transmit()
426 if (bc->hdlctx.state == tx_tail && !(stat & EPP_PTTBIT)) in transmit()
427 bc->hdlctx.state = tx_idle; in transmit()
428 if (bc->hdlctx.state == tx_idle && bc->hdlctx.calibrate <= 0) { in transmit()
429 if (bc->hdlctx.bufcnt <= 0) in transmit()
431 if (bc->hdlctx.bufcnt <= 0) in transmit()
433 if (!bc->ch_params.fulldup) { in transmit()
435 bc->hdlctx.slotcnt = bc->ch_params.slottime; in transmit()
438 if ((--bc->hdlctx.slotcnt) > 0) in transmit()
440 bc->hdlctx.slotcnt = bc->ch_params.slottime; in transmit()
441 if (get_random_u8() > bc->ch_params.ppersist) in transmit()
445 if (bc->hdlctx.state == tx_idle && bc->hdlctx.bufcnt > 0) { in transmit()
446 bc->hdlctx.state = tx_keyup; in transmit()
447 bc->hdlctx.flags = tenms_to_flags(bc, bc->ch_params.tx_delay); in transmit()
448 bc->ptt_keyed++; in transmit()
451 switch (bc->hdlctx.state) { in transmit()
453 i = min_t(int, cnt, bc->hdlctx.flags); in transmit()
454 cnt -= i; in transmit()
455 bc->hdlctx.flags -= i; in transmit()
456 if (bc->hdlctx.flags <= 0) in transmit()
457 bc->hdlctx.state = tx_data; in transmit()
461 if (j != pp->ops->epp_write_data(pp, tmp, j, 0)) in transmit()
462 return -1; in transmit()
463 i -= j; in transmit()
468 if (bc->hdlctx.bufcnt <= 0) { in transmit()
470 if (bc->hdlctx.bufcnt <= 0) { in transmit()
471 bc->hdlctx.state = tx_tail; in transmit()
472 bc->hdlctx.flags = tenms_to_flags(bc, bc->ch_params.tx_tail); in transmit()
476 i = min_t(int, cnt, bc->hdlctx.bufcnt); in transmit()
477 bc->hdlctx.bufcnt -= i; in transmit()
478 cnt -= i; in transmit()
479 if (i != pp->ops->epp_write_data(pp, bc->hdlctx.bufptr, i, 0)) in transmit()
480 return -1; in transmit()
481 bc->hdlctx.bufptr += i; in transmit()
486 if (bc->hdlctx.bufcnt > 0) { in transmit()
487 bc->hdlctx.state = tx_data; in transmit()
490 i = min_t(int, cnt, bc->hdlctx.flags); in transmit()
492 cnt -= i; in transmit()
493 bc->hdlctx.flags -= i; in transmit()
497 if (j != pp->ops->epp_write_data(pp, tmp, j, 0)) in transmit()
498 return -1; in transmit()
499 i -= j; in transmit()
506 if (bc->hdlctx.calibrate <= 0) in transmit()
508 i = min_t(int, cnt, bc->hdlctx.calibrate); in transmit()
509 cnt -= i; in transmit()
510 bc->hdlctx.calibrate -= i; in transmit()
514 if (j != pp->ops->epp_write_data(pp, tmp, j, 0)) in transmit()
515 return -1; in transmit()
516 i -= j; in transmit()
524 /* ---------------------------------------------------------------------- */
533 if (bc->hdlcrx.bufcnt < 4) in do_rxpacket()
535 if (!check_crc_ccitt(bc->hdlcrx.buf, bc->hdlcrx.bufcnt)) in do_rxpacket()
537 pktlen = bc->hdlcrx.bufcnt-2+1; /* KISS kludge */ in do_rxpacket()
539 printk("%s: memory squeeze, dropping packet\n", dev->name); in do_rxpacket()
540 dev->stats.rx_dropped++; in do_rxpacket()
545 memcpy(cp, bc->hdlcrx.buf, pktlen - 1); in do_rxpacket()
546 skb->protocol = ax25_type_trans(skb, dev); in do_rxpacket()
548 dev->stats.rx_packets++; in do_rxpacket()
554 struct parport *pp = bc->pdev->port; in receive()
561 numbits = bc->hdlcrx.numbits; in receive()
562 state = bc->hdlcrx.state; in receive()
563 bitstream = bc->hdlcrx.bitstream; in receive()
564 bitbuf = bc->hdlcrx.bitbuf; in receive()
567 cnt -= cnt2; in receive()
568 if (cnt2 != pp->ops->epp_read_data(pp, tmp, cnt2, 0)) { in receive()
569 ret = -1; in receive()
573 for (; cnt2 > 0; cnt2--, cp++) { in receive()
593 bc->hdlcrx.bufcnt = 0; in receive()
594 bc->hdlcrx.bufptr = bc->hdlcrx.buf; in receive()
596 numbits = 7-j; in receive()
602 numbits--; in receive()
607 if (bc->hdlcrx.bufcnt >= TXBUFFER_SIZE) { in receive()
610 *(bc->hdlcrx.bufptr)++ = bitbuf >> (16-numbits); in receive()
611 bc->hdlcrx.bufcnt++; in receive()
612 numbits -= 8; in receive()
617 bc->hdlcrx.numbits = numbits; in receive()
618 bc->hdlcrx.state = state; in receive()
619 bc->hdlcrx.bitstream = bitstream; in receive()
620 bc->hdlcrx.bitbuf = bitbuf; in receive()
624 /* --------------------------------------------------------------------- */
642 dev = bc->dev; in epp_bh()
643 if (!bc->work_running) in epp_bh()
646 pp = bc->pdev->port; in epp_bh()
648 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_bh()
650 bc->stat = stat; in epp_bh()
651 bc->debug_vals.last_pllcorr = stat; in epp_bh()
653 if (bc->modem == EPP_FPGAEXTSTATUS) { in epp_bh()
656 if (pp->ops->epp_write_addr(pp, tmp, 1, 0) != 1) in epp_bh()
658 if (pp->ops->epp_read_addr(pp, tmp, 2, 0) != 2) in epp_bh()
664 if (pp->ops->epp_write_addr(pp, tmp, 1, 0) != 1) in epp_bh()
666 if (pp->ops->epp_read_addr(pp, tmp, 2, 0) != 2) in epp_bh()
669 cnt2 = 16384 - (cnt2 & 0x7fff); in epp_bh()
672 if (pp->ops->epp_write_addr(pp, tmp, 1, 0) != 1) in epp_bh()
679 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_bh()
681 bc->stat = stat; in epp_bh()
686 cnt = 2048 - 256; in epp_bh()
690 cnt = 2048 - 1793; in epp_bh()
698 cnt = 2048 - 1025; in epp_bh()
721 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_bh()
725 if (bc->bitrate < 50000) in epp_bh()
727 else if (bc->bitrate < 100000) in epp_bh()
732 cnt--; in epp_bh()
733 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_bh()
739 bc->debug_vals.mod_cycles = time2 - time1; in epp_bh()
740 bc->debug_vals.demod_cycles = time3 - time2; in epp_bh()
742 schedule_delayed_work(&bc->run_work, 1); in epp_bh()
743 if (!bc->skb) in epp_bh()
750 /* ---------------------------------------------------------------------- */
759 if (skb->protocol == htons(ETH_P_IP)) in baycom_send_packet()
762 if (skb->data[0] != 0) { in baycom_send_packet()
763 do_kiss_params(bc, skb->data, skb->len); in baycom_send_packet()
767 if (bc->skb) { in baycom_send_packet()
772 if (skb->len >= HDLCDRV_MAXFLEN+1 || skb->len < 3) { in baycom_send_packet()
777 bc->skb = skb; in baycom_send_packet()
781 /* --------------------------------------------------------------------- */
788 dev_addr_set(dev, sa->sa_data); in baycom_set_mac_address()
792 /* --------------------------------------------------------------------- */
799 printk(KERN_DEBUG "baycom_epp: %s: why am I being woken up?\n", dev->name); in epp_wakeup()
800 if (!parport_claim(bc->pdev)) in epp_wakeup()
801 printk(KERN_DEBUG "baycom_epp: %s: I'm broken.\n", dev->name); in epp_wakeup()
804 /* --------------------------------------------------------------------- */
812 * there is non-reboot way to recover if something goes wrong.
818 struct parport *pp = parport_find_base(dev->base_addr); in epp_open()
826 printk(KERN_ERR "%s: parport at 0x%lx unknown\n", bc_drvname, dev->base_addr); in epp_open()
827 return -ENXIO; in epp_open()
830 if (pp->irq < 0) { in epp_open()
831 printk(KERN_ERR "%s: parport at 0x%lx has no irq\n", bc_drvname, pp->base); in epp_open()
833 return -ENXIO; in epp_open()
836 if ((~pp->modes) & (PARPORT_MODE_TRISTATE | PARPORT_MODE_PCSPP | PARPORT_MODE_SAFEININT)) { in epp_open()
838 bc_drvname, pp->base); in epp_open()
840 return -EIO; in epp_open()
842 memset(&bc->modem, 0, sizeof(bc->modem)); in epp_open()
854 return -ENODEV; in epp_open()
857 bc->pdev = parport_register_dev_model(pp, dev->name, &par_cb, i); in epp_open()
859 if (!bc->pdev) { in epp_open()
860 printk(KERN_ERR "%s: cannot register parport at 0x%lx\n", bc_drvname, pp->base); in epp_open()
861 return -ENXIO; in epp_open()
863 if (parport_claim(bc->pdev)) { in epp_open()
864 printk(KERN_ERR "%s: parport at 0x%lx busy\n", bc_drvname, pp->base); in epp_open()
865 parport_unregister_device(bc->pdev); in epp_open()
866 return -EBUSY; in epp_open()
868 dev->irq = /*pp->irq*/ 0; in epp_open()
869 INIT_DELAYED_WORK(&bc->run_work, epp_bh); in epp_open()
870 bc->work_running = 1; in epp_open()
871 bc->modem = EPP_CONVENTIONAL; in epp_open()
875 bc->modem = /*EPP_FPGA*/ EPP_FPGAEXTSTATUS; in epp_open()
877 /* reset the modem */ in epp_open()
880 if (pp->ops->epp_write_addr(pp, tmp, 2, 0) != 2) in epp_open()
886 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_open()
892 if (pp->ops->epp_read_data(pp, tmp, 128, 0) != 128) in epp_open()
894 if (pp->ops->epp_read_data(pp, tmp, 128, 0) != 128) in epp_open()
899 if (pp->ops->epp_read_addr(pp, &stat, 1, 0) != 1) in epp_open()
903 if (pp->ops->epp_read_data(pp, tmp, 1, 0) != 1) in epp_open()
907 tstart = jiffies - tstart; in epp_open()
908 bc->bitrate = i * (8 * HZ) / tstart; in epp_open()
910 i = bc->bitrate >> 3; in epp_open()
916 bc_drvname, bc->bitrate, j, bc->bitrate >> (j+2)); in epp_open()
918 if (pp->ops->epp_write_addr(pp, tmp, 1, 0) != 1) in epp_open()
923 bc->hdlcrx.state = 0; in epp_open()
924 bc->hdlcrx.numbits = 0; in epp_open()
925 bc->hdlctx.state = tx_idle; in epp_open()
926 bc->hdlctx.bufcnt = 0; in epp_open()
927 bc->hdlctx.slotcnt = bc->ch_params.slottime; in epp_open()
928 bc->hdlctx.calibrate = 0; in epp_open()
930 schedule_delayed_work(&bc->run_work, 1); in epp_open()
936 parport_write_control(pp, 0); /* reset the adapter */ in epp_open()
937 parport_release(bc->pdev); in epp_open()
938 parport_unregister_device(bc->pdev); in epp_open()
939 return -EIO; in epp_open()
942 /* --------------------------------------------------------------------- */
947 struct parport *pp = bc->pdev->port; in epp_close()
950 bc->work_running = 0; in epp_close()
951 cancel_delayed_work_sync(&bc->run_work); in epp_close()
952 bc->stat = EPP_DCDBIT; in epp_close()
954 pp->ops->epp_write_addr(pp, tmp, 1, 0); in epp_close()
955 parport_write_control(pp, 0); /* reset the adapter */ in epp_close()
956 parport_release(bc->pdev); in epp_close()
957 parport_unregister_device(bc->pdev); in epp_close()
958 dev_kfree_skb(bc->skb); in epp_close()
959 bc->skb = NULL; in epp_close()
961 bc_drvname, dev->base_addr, dev->irq); in epp_close()
965 /* --------------------------------------------------------------------- */
972 bc->cfg.intclk = 1; in baycom_setmode()
974 bc->cfg.intclk = 0; in baycom_setmode()
976 bc->cfg.extmodem = 0; in baycom_setmode()
978 bc->cfg.extmodem = 1; in baycom_setmode()
980 bc->cfg.loopback = 1; in baycom_setmode()
982 bc->cfg.loopback = 0; in baycom_setmode()
984 bc->cfg.fclk = simple_strtoul(cp+5, NULL, 0); in baycom_setmode()
985 if (bc->cfg.fclk < 1000000) in baycom_setmode()
986 bc->cfg.fclk = 1000000; in baycom_setmode()
987 if (bc->cfg.fclk > 25000000) in baycom_setmode()
988 bc->cfg.fclk = 25000000; in baycom_setmode()
990 if ((cp = strstr(modestr,"bps="))) { in baycom_setmode()
991 bc->cfg.bps = simple_strtoul(cp+4, NULL, 0); in baycom_setmode()
992 if (bc->cfg.bps < 1000) in baycom_setmode()
993 bc->cfg.bps = 1000; in baycom_setmode()
994 if (bc->cfg.bps > 1500000) in baycom_setmode()
995 bc->cfg.bps = 1500000; in baycom_setmode()
1000 /* --------------------------------------------------------------------- */
1009 return -ENOIOCTLCMD; in baycom_siocdevprivate()
1012 return -EFAULT; in baycom_siocdevprivate()
1015 return -ENOIOCTLCMD; in baycom_siocdevprivate()
1018 hi.data.cp.tx_delay = bc->ch_params.tx_delay; in baycom_siocdevprivate()
1019 hi.data.cp.tx_tail = bc->ch_params.tx_tail; in baycom_siocdevprivate()
1020 hi.data.cp.slottime = bc->ch_params.slottime; in baycom_siocdevprivate()
1021 hi.data.cp.ppersist = bc->ch_params.ppersist; in baycom_siocdevprivate()
1022 hi.data.cp.fulldup = bc->ch_params.fulldup; in baycom_siocdevprivate()
1027 return -EACCES; in baycom_siocdevprivate()
1028 bc->ch_params.tx_delay = hi.data.cp.tx_delay; in baycom_siocdevprivate()
1029 bc->ch_params.tx_tail = hi.data.cp.tx_tail; in baycom_siocdevprivate()
1030 bc->ch_params.slottime = hi.data.cp.slottime; in baycom_siocdevprivate()
1031 bc->ch_params.ppersist = hi.data.cp.ppersist; in baycom_siocdevprivate()
1032 bc->ch_params.fulldup = hi.data.cp.fulldup; in baycom_siocdevprivate()
1033 bc->hdlctx.slotcnt = 1; in baycom_siocdevprivate()
1037 hi.data.mp.iobase = dev->base_addr; in baycom_siocdevprivate()
1038 hi.data.mp.irq = dev->irq; in baycom_siocdevprivate()
1039 hi.data.mp.dma = dev->dma; in baycom_siocdevprivate()
1048 return -EACCES; in baycom_siocdevprivate()
1049 dev->base_addr = hi.data.mp.iobase; in baycom_siocdevprivate()
1050 dev->irq = /*hi.data.mp.irq*/0; in baycom_siocdevprivate()
1051 dev->dma = /*hi.data.mp.dma*/0; in baycom_siocdevprivate()
1055 hi.data.cs.ptt = !!(bc->stat & EPP_PTTBIT); in baycom_siocdevprivate()
1056 hi.data.cs.dcd = !(bc->stat & EPP_DCDBIT); in baycom_siocdevprivate()
1057 hi.data.cs.ptt_keyed = bc->ptt_keyed; in baycom_siocdevprivate()
1058 hi.data.cs.tx_packets = dev->stats.tx_packets; in baycom_siocdevprivate()
1059 hi.data.cs.tx_errors = dev->stats.tx_errors; in baycom_siocdevprivate()
1060 hi.data.cs.rx_packets = dev->stats.rx_packets; in baycom_siocdevprivate()
1061 hi.data.cs.rx_errors = dev->stats.rx_errors; in baycom_siocdevprivate()
1065 hi.data.ocs.ptt = !!(bc->stat & EPP_PTTBIT); in baycom_siocdevprivate()
1066 hi.data.ocs.dcd = !(bc->stat & EPP_DCDBIT); in baycom_siocdevprivate()
1067 hi.data.ocs.ptt_keyed = bc->ptt_keyed; in baycom_siocdevprivate()
1072 return -EACCES; in baycom_siocdevprivate()
1073 bc->hdlctx.calibrate = hi.data.calibrate * bc->bitrate / 8; in baycom_siocdevprivate()
1081 sprintf(hi.data.modename, "%sclk,%smodem,fclk=%d,bps=%d%s", in baycom_siocdevprivate()
1082 bc->cfg.intclk ? "int" : "ext", in baycom_siocdevprivate()
1083 bc->cfg.extmodem ? "ext" : "int", bc->cfg.fclk, bc->cfg.bps, in baycom_siocdevprivate()
1084 bc->cfg.loopback ? ",loopback" : ""); in baycom_siocdevprivate()
1089 return -EACCES; in baycom_siocdevprivate()
1090 hi.data.modename[sizeof(hi.data.modename)-1] = '\0'; in baycom_siocdevprivate()
1103 return -EFAULT; in baycom_siocdevprivate()
1107 /* --------------------------------------------------------------------- */
1119 * If dev->base_addr == 0, probe all likely locations.
1120 * If dev->base_addr == 1, always return failure.
1121 * If dev->base_addr == 2, allocate space for the device and return success
1138 bc->ch_params = dflt_ch_params; in baycom_probe()
1139 bc->ptt_keyed = 0; in baycom_probe()
1146 bc->skb = NULL; in baycom_probe()
1148 dev->netdev_ops = &baycom_netdev_ops; in baycom_probe()
1149 dev->header_ops = &ax25_header_ops; in baycom_probe()
1151 dev->type = ARPHRD_AX25; /* AF_AX25 device */ in baycom_probe()
1152 dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN; in baycom_probe()
1153 dev->mtu = AX25_DEF_PACLEN; /* eth_mtu is the default */ in baycom_probe()
1154 dev->addr_len = AX25_ADDR_LEN; /* sizeof an ax.25 address */ in baycom_probe()
1155 memcpy(dev->broadcast, &ax25_bcast, AX25_ADDR_LEN); in baycom_probe()
1157 dev->tx_queue_len = 16; in baycom_probe()
1160 dev->flags = 0; in baycom_probe()
1163 /* --------------------------------------------------------------------- */
1180 /* --------------------------------------------------------------------- */
1184 struct device_driver *drv = par_dev->dev.driver; in baycom_epp_par_probe()
1185 int len = strlen(drv->name); in baycom_epp_par_probe()
1187 if (strncmp(par_dev->name, drv->name, len)) in baycom_epp_par_probe()
1188 return -ENODEV; in baycom_epp_par_probe()
1205 bc->dev = dev; in baycom_epp_dev_setup()
1206 bc->magic = BAYCOM_MAGIC; in baycom_epp_dev_setup()
1207 bc->cfg.fclk = 19666600; in baycom_epp_dev_setup()
1208 bc->cfg.bps = 9600; in baycom_epp_dev_setup()
1237 return found ? 0 : -ENOMEM; in init_baycomepp()
1240 sprintf(dev->name, "bce%d", i); in init_baycomepp()
1241 dev->base_addr = iobase[i]; in init_baycomepp()
1249 printk(KERN_WARNING "%s: cannot register net device %s\n", bc_drvname, dev->name); in init_baycomepp()
1261 return -ENXIO; in init_baycomepp()
1276 if (bc->magic == BAYCOM_MAGIC) { in cleanup_baycomepp()
1289 /* --------------------------------------------------------------------- */
1317 /* --------------------------------------------------------------------- */