On 2015-05-27 14:19, Hervé Poussineau wrote:
> Signed-off-by: Laurent Vivier <laur...@vivier.eu>
> Signed-off-by: Hervé Poussineau <hpous...@reactos.org>
> ---
>  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 = 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 @@
>  
>  //#define DEBUG_SONIC
>  
> +#define SONIC_PROM_SIZE 0x1000
>  
>  #ifdef DEBUG_SONIC
>  #define DPRINTF(fmt, ...) \
> @@ -156,6 +157,7 @@ typedef struct dp8393xState {
>      NICConf conf;
>      NICState *nic;
>      MemoryRegion mmio;
> +    MemoryRegion prom;
>  
>      /* Registers */
>      uint8_t cam[16][6];
> @@ -816,12 +818,15 @@ static void dp8393x_instance_init(Object *obj)
>      dp8393xState *s = DP8393X(obj);
>  
>      sysbus_init_mmio(sbd, &s->mmio);
> +    sysbus_init_mmio(sbd, &s->prom);
>      sysbus_init_irq(sbd, &s->irq);
>  }
>  
>  static void dp8393x_realize(DeviceState *dev, Error **errp)
>  {
>      dp8393xState *s = DP8393X(dev);
> +    int i, checksum;
> +    uint8_t *prom;
>  
>      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)
>  
>      s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s);
>      s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */
> +
> +    memory_region_init_rom_device(&s->prom, OBJECT(dev), NULL, NULL,
> +                                  "dp8393x-prom", SONIC_PROM_SIZE, NULL);
> +    prom = memory_region_get_ram_ptr(&s->prom);
> +    checksum = 0;
> +    for (i = 0; i < 6; i++) {
> +        prom[i] = s->conf.macaddr.a[i];
> +        checksum += prom[i];
> +        if (checksum > 0xff) {
> +            checksum = (checksum + 1) & 0xff;
> +        }
> +    }
> +    prom[7] = 0xff - checksum;
>  }
>  
>  static Property dp8393x_properties[] = {

Reviewed-by: Aurelien Jarno <aurel...@aurel32.net>

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurel...@aurel32.net                 http://www.aurel32.net

Reply via email to