From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxaN5-0005xU-DC for qemu-devel@nongnu.org; Wed, 27 May 2015 08:23:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YxaN1-0002ro-QA for qemu-devel@nongnu.org; Wed, 27 May 2015 08:23:43 -0400 Received: from smtp2-g21.free.fr ([2a01:e0c:1:1599::11]:33222) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxaN1-0002rg-K0 for qemu-devel@nongnu.org; Wed, 27 May 2015 08:23:39 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Wed, 27 May 2015 14:19:55 +0200 Message-Id: <1432729200-5322-13-git-send-email-hpoussin@reactos.org> In-Reply-To: <1432729200-5322-1-git-send-email-hpoussin@reactos.org> References: <1432729200-5322-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 12/17] net/dp8393x: add PROM to store MAC address List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Leon Alrae , Laurent Vivier , Aurelien Jarno Signed-off-by: Laurent Vivier Signed-off-by: Herv=C3=A9 Poussineau --- hw/mips/mips_jazz.c | 1 + hw/net/dp8393x.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c index 648654e..9d60633 100644 --- a/hw/mips/mips_jazz.c +++ b/hw/mips/mips_jazz.c @@ -282,6 +282,7 @@ static void mips_jazz_init(MachineState *machine, qdev_init_nofail(dev); sysbus =3D SYS_BUS_DEVICE(dev); sysbus_mmio_map(sysbus, 0, 0x80001000); + sysbus_mmio_map(sysbus, 1, 0x8000b000); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4)); break; } else if (is_help_option(nd->model)) { diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index 51e728b..ef1fb0e 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -25,6 +25,7 @@ =20 //#define DEBUG_SONIC =20 +#define SONIC_PROM_SIZE 0x1000 =20 #ifdef DEBUG_SONIC #define DPRINTF(fmt, ...) \ @@ -156,6 +157,7 @@ typedef struct dp8393xState { NICConf conf; NICState *nic; MemoryRegion mmio; + MemoryRegion prom; =20 /* Registers */ uint8_t cam[16][6]; @@ -816,12 +818,15 @@ static void dp8393x_instance_init(Object *obj) dp8393xState *s =3D DP8393X(obj); =20 sysbus_init_mmio(sbd, &s->mmio); + sysbus_init_mmio(sbd, &s->prom); sysbus_init_irq(sbd, &s->irq); } =20 static void dp8393x_realize(DeviceState *dev, Error **errp) { dp8393xState *s =3D DP8393X(dev); + int i, checksum; + uint8_t *prom; =20 address_space_init(&s->as, s->dma_mr, "dp8393x"); memory_region_init_io(&s->mmio, OBJECT(dev), &dp8393x_ops, s, @@ -833,6 +838,19 @@ static void dp8393x_realize(DeviceState *dev, Error = **errp) =20 s->watchdog =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s= ); s->regs[SONIC_SR] =3D 0x0004; /* only revision recognized by Linux *= / + + memory_region_init_rom_device(&s->prom, OBJECT(dev), NULL, NULL, + "dp8393x-prom", SONIC_PROM_SIZE, NULL)= ; + prom =3D memory_region_get_ram_ptr(&s->prom); + checksum =3D 0; + for (i =3D 0; i < 6; i++) { + prom[i] =3D s->conf.macaddr.a[i]; + checksum +=3D prom[i]; + if (checksum > 0xff) { + checksum =3D (checksum + 1) & 0xff; + } + } + prom[7] =3D 0xff - checksum; } =20 static Property dp8393x_properties[] =3D { --=20 2.1.4