コード例 #1
0
ファイル: ne2000.c プロジェクト: Q-Taro/BootCode
/* ne2000_intr --------------------------------------------------------------*/
int
ne2000_intr()
{
	int	tsr;
	int	isr;
	static	char	buf[1600];
ne2000_rcv(buf, 1600);
return 0;

	while (1) {
		isr = inb(IO_DP8390 + DP_ISR);
		if (isr == 0)
			break;
		outb(IO_DP8390 + DP_ISR, isr);
		if (isr & (ISR_PTX | ISR_TXE)) {
			/* transmit -----------------------------------------*/
			if (isr & ISR_TXE) {
				/* send error -------------------------------*/
			}
		} else {
			tsr = inb(IO_DP8390 + DP_TSR);
			if (tsr & TSR_PTX) ; 
			if (tsr & TSR_DFR) ;
			if (tsr & TSR_COL) ;
			if (tsr & TSR_ABT) ;
			if (tsr & TSR_CRS) ;
		}

		if (isr & ISR_PRX) {
/*
			ne2000_rcv(buf, 1600);
*/
		}
		if (isr & ISR_CNT) {
printk("ne2000:CNTR-CNTR-CNTR-CNTR\n");
			inb(IO_DP8390 + DP_CNTR0);
			inb(IO_DP8390 + DP_CNTR1);
			inb(IO_DP8390 + DP_CNTR2);
		}
		if (isr & ISR_RST)
			ne2000_reset();
printk("ISR: %x\n", isr);
	}

	return 0;
}
コード例 #2
0
static int isa_ne2000_initfn(ISADevice *dev)
{
    ISANE2000State *isa = DO_UPCAST(ISANE2000State, dev, dev);
    NE2000State *s = &isa->ne2000;

    ne2000_setup_io(s, 0x20);
    isa_register_ioport(dev, &s->io, isa->iobase);

    isa_init_irq(dev, &s->irq, isa->isairq);

    qemu_macaddr_default_if_unset(&s->c.macaddr);
    ne2000_reset(s);

    s->nic = qemu_new_nic(&net_ne2000_isa_info, &s->c,
                          object_get_typename(OBJECT(dev)), dev->qdev.id, s);
    qemu_format_nic_info_str(&s->nic->nc, s->c.macaddr.a);

    return 0;
}