X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=hw%2Fsmc91c111.c;h=410051d3ccc80e047a257163a9a568f7ceb2c4e3;hb=d66846a14e191c75f4aa373623dd9a7aaa843ade;hp=0249cfe98b2953d842b57181ad594093e9ae274d;hpb=416b5d366d79431d07d2dff693f4b70d679ffc42;p=qemu diff --git a/hw/smc91c111.c b/hw/smc91c111.c index 0249cfe..410051d 100644 --- a/hw/smc91c111.c +++ b/hw/smc91c111.c @@ -1,4 +1,4 @@ -/* +/* * SMSC 91C111 Ethernet interface emulation * * Copyright (c) 2005 CodeSourcery, LLC. @@ -7,7 +7,9 @@ * This code is licenced under the GPL */ -#include "vl.h" +#include "hw.h" +#include "net.h" +#include "devices.h" /* For crc32 */ #include @@ -24,8 +26,7 @@ typedef struct { uint16_t gpr; uint16_t ptr; uint16_t ercv; - void *pic; - int irq; + qemu_irq irq; int bank; int packet_num; int tx_alloc; @@ -86,7 +87,7 @@ static void smc91c111_update(smc91c111_state *s) if (s->tx_fifo_done_len != 0) s->int_level |= INT_TX; level = (s->int_level & s->int_mask) != 0; - pic_set_irq_new(s->pic, s->irq, level); + qemu_set_irq(s->irq, level); } /* Try to allocate a packet. Returns 0x80 on failure. */ @@ -414,7 +415,7 @@ static void smc91c111_writeb(void *opaque, target_phys_addr_t offset, break; } cpu_abort (cpu_single_env, "smc91c111_write: Bad reg %d:%x\n", - s->bank, offset); + s->bank, (int)offset); } static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset) @@ -446,7 +447,9 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset) case 7: /* Not implemented. */ return 0; - case 8: /* Free memory available. */ + case 8: /* Memory size. */ + return NUM_PACKETS; + case 9: /* Free memory available. */ { int i; int n; @@ -457,8 +460,6 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset) } return n; } - case 9: /* Memory size. */ - return NUM_PACKETS; case 10: case 11: /* RPCR */ /* Not implemented. */ return 0; @@ -556,7 +557,7 @@ static uint32_t smc91c111_readb(void *opaque, target_phys_addr_t offset) break; } cpu_abort (cpu_single_env, "smc91c111_read: Bad reg %d:%x\n", - s->bank, offset); + s->bank, (int)offset); return 0; } @@ -650,7 +651,7 @@ static void smc91c111_receive(void *opaque, const uint8_t *buf, int size) /* Pad short packets. */ if (size < 64) { int pad; - + if (size & 1) *(p++) = buf[size - 1]; pad = 64 - size; @@ -693,7 +694,7 @@ static CPUWriteMemoryFunc *smc91c111_writefn[] = { smc91c111_writel }; -void smc91c111_init(NICInfo *nd, uint32_t base, void *pic, int irq) +void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq) { smc91c111_state *s; int iomemtype; @@ -703,7 +704,6 @@ void smc91c111_init(NICInfo *nd, uint32_t base, void *pic, int irq) smc91c111_writefn, s); cpu_register_physical_memory(base, 16, iomemtype); s->base = base; - s->pic = pic; s->irq = irq; memcpy(s->macaddr, nd->macaddr, 6);