[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 13/18] hw/m68k/q800: move PROM and checksum calculation from dp839
From: |
Philippe Mathieu-Daudé |
Subject: |
[PULL 13/18] hw/m68k/q800: move PROM and checksum calculation from dp8393x device to board |
Date: |
Fri, 2 Jul 2021 15:35:52 +0200 |
From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This is in preparation for each board to have its own separate bit storage
format and checksum for storing the MAC address.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Tested-by: Finn Thain <fthain@linux-m68k.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210625065401.30170-5-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/m68k/q800.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 11376daa858..491f283a17a 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -70,6 +70,8 @@
#define NUBUS_SUPER_SLOT_BASE 0x60000000
#define NUBUS_SLOT_BASE 0xf0000000
+#define SONIC_PROM_SIZE 0x1000
+
/*
* the video base, whereas it a Nubus address,
* is needed by the kernel to have early display and
@@ -211,8 +213,10 @@ static void q800_init(MachineState *machine)
int32_t initrd_size;
MemoryRegion *rom;
MemoryRegion *io;
+ MemoryRegion *dp8393x_prom = g_new(MemoryRegion, 1);
+ uint8_t *prom;
const int io_slice_nb = (IO_SIZE / IO_SLICE) - 1;
- int i;
+ int i, checksum;
ram_addr_t ram_size = machine->ram_size;
const char *kernel_filename = machine->kernel_filename;
const char *initrd_filename = machine->initrd_filename;
@@ -319,9 +323,25 @@ static void q800_init(MachineState *machine)
sysbus = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(sysbus, &error_fatal);
sysbus_mmio_map(sysbus, 0, SONIC_BASE);
- sysbus_mmio_map(sysbus, 1, SONIC_PROM_BASE);
sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 2));
+ memory_region_init_rom(dp8393x_prom, NULL, "dp8393x-q800.prom",
+ SONIC_PROM_SIZE, &error_fatal);
+ memory_region_add_subregion(get_system_memory(), SONIC_PROM_BASE,
+ dp8393x_prom);
+
+ /* Add MAC address with valid checksum to PROM */
+ prom = memory_region_get_ram_ptr(dp8393x_prom);
+ checksum = 0;
+ for (i = 0; i < 6; i++) {
+ prom[i] = nd_table[0].macaddr.a[i];
+ checksum += prom[i];
+ if (checksum > 0xff) {
+ checksum = (checksum + 1) & 0xff;
+ }
+ }
+ prom[7] = 0xff - checksum;
+
/* SCC */
dev = qdev_new(TYPE_ESCC);
--
2.31.1
- [PULL 04/18] target/mips: Extract nanoMIPS ISA translation routines, (continued)
- [PULL 04/18] target/mips: Extract nanoMIPS ISA translation routines, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 05/18] hw/pci-host/bonito: Trace PCI config accesses smaller than 32-bit, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 06/18] hw/pci-host/bonito: Allow PCI config accesses smaller than 32-bit, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 07/18] tests/acceptance: Test Linux on the Fuloong 2E machine, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 08/18] g364fb: use RAM memory region for framebuffer, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 09/18] g364fb: add VMStateDescription for G364SysBusState, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 10/18] dp8393x: checkpatch fixes, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 11/18] dp8393x: convert to trace-events, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 12/18] hw/mips/jazz: move PROM and checksum calculation from dp8393x device to board, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 13/18] hw/m68k/q800: move PROM and checksum calculation from dp8393x device to board,
Philippe Mathieu-Daudé <=
- [PULL 14/18] dp8393x: remove onboard PROM containing MAC address and checksum, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 15/18] qemu/bitops.h: add bitrev8 implementation, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 16/18] hw/m68k/q800: fix PROM checksum and MAC address storage, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 17/18] hw/mips/jazz: specify correct endian for dp8393x device, Philippe Mathieu-Daudé, 2021/07/02
- [PULL 18/18] hw/mips/jazz: Map the UART devices unconditionally, Philippe Mathieu-Daudé, 2021/07/02
- Re: [PULL 00/18] MIPS patches for 2021-07-02, Peter Maydell, 2021/07/04