From nobody Tue Feb 10 10:42:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.42 as permitted sender) client-ip=209.85.221.42; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f42.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1634511179; cv=none; d=zohomail.com; s=zohoarc; b=NhNGgf1jEtNV5a4GH4SXh5cjgKCnMADzmKkdGIZmWNhbLDZn/zj1ClASvnnbvp+CsiKb/CSls7hm+EBLH0lZekZuVKNMjkDHMkn0O+Yelv5DHyiWLcB3GX7H7sMr+TxNC1c0228omTg7abf/5DzjX48AdOP8Ue5iQ+vKDTCLIK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634511179; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UMDhCXCDbzxJyYdvKoRXl+1jB8zw3v1bjW6eZPBvW4k=; b=Rb9cijNbrXLzaMqzBwFaRP53qvEiB7oGAiMKI6QHXpXzYlV0MwopOmB9vPE1dDjc2om+16J66nNfr1bFoynfSve6+xYcYqUFzKWFbe3EA9Zte3PAkIWAB+ZoXU7LLBcXgt+BPkSOeM0ER+OrRlYNhc1M8lrd3Flt+W4CiXjVdIc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by mx.zohomail.com with SMTPS id 1634511179838301.64347232983914; Sun, 17 Oct 2021 15:52:59 -0700 (PDT) Received: by mail-wr1-f42.google.com with SMTP id k7so37640138wrd.13 for ; Sun, 17 Oct 2021 15:52:59 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.. (213.red-81-36-146.dynamicip.rima-tde.net. [81.36.146.213]) by smtp.gmail.com with ESMTPSA id c185sm10992864wma.8.2021.10.17.15.52.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Oct 2021 15:52:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UMDhCXCDbzxJyYdvKoRXl+1jB8zw3v1bjW6eZPBvW4k=; b=anEVRsDz+1QcpVYRL2+QJ9RHMCMkVTuDMkazq8Xssg1KX5R9dBUE/FPNCs79ofkP0z dExoj91l7MvxE/2GXSDwN+8MLD+BVo2VwMdvMSaR8jRtAKTkKaDSjxDPmjwmaWfQwRpg E+zNOgKHjiTz3hHib3DLZKdZW9pGmNj5lb5ITULwI0/c25E4VVnc0q3NCrznkMb36pPv Xqqi6O+AfRdfcYrur0no7YEcezyAYSUkobhxX0iQXnAoOYQq4X4JqDEl9Dn+zPiIqXXS VGZHFtbtiQpQVQl9FHu12sTGN7mUq89QY2cncR+/jPT9/IQFrXE5wsSpxWX79RFQrh7E MDhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=UMDhCXCDbzxJyYdvKoRXl+1jB8zw3v1bjW6eZPBvW4k=; b=2cDVVFdRDR8xfVrAlhQjlI9e/Vf58lm4AXBtygaM0+XfH8zH2D3IVMooWhnJbg3u/w uqejfePaUuKwhUkv0KdpRmN+F+h5DGrpN8uf/iCwcmDzafmU1SZ2nL0zTEgsJZBOrOcb ahN+zp+Dy54wrtKGk1YK3USLfOlj8nrYfN7ClYGk55hGro/1pxaMZBK8xioBGazIoNwA 6NcAGrhw8vN7HbXFdfYBRKUXlsLG7fMEUbXojFS3blH3S2sbWb31CTMtIYqHRYlNdoR2 /UAos1xcaOyMlms5HMpak80nahIoaaTfO4dEadOcgrMOrRDe7py8i+rasPLSqZzF+1Ly vJqQ== X-Gm-Message-State: AOAM532g9h7EHE20UbNeoie6pIl59HQPnBGjgOL0Odmd+AZkqDsnzrJ3 gq2Gdpmv29PLnbYcKSbt3aM= X-Google-Smtp-Source: ABdhPJx1tcYowVmrM2PxhoF38B3rIfExYgZYD33a8EvVY5qSZvWhIdx1yZbgjL23pYFT31xm5V4TmQ== X-Received: by 2002:a5d:6dce:: with SMTP id d14mr31481507wrz.363.1634511178006; Sun, 17 Oct 2021 15:52:58 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paul Burton , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Huacai Chen , Jiaxun Yang Subject: [PULL 02/17] hw/mips/boston: Massage memory map information Date: Mon, 18 Oct 2021 00:52:30 +0200 Message-Id: <20211017225245.2618892-3-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211017225245.2618892-1-f4bug@amsat.org> References: <20211017225245.2618892-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1634511180814100001 From: Jiaxun Yang Use memmap array to uinfy address of memory map. That would allow us reuse address information for FDT generation. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daud=C3=A9 [PMD: Use local 'regaddr' in gen_firmware(), fix coding style] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20211002184539.169-2-jiaxun.yang@flygoat.com> --- hw/mips/boston.c | 108 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 80 insertions(+), 28 deletions(-) diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 20b06865b2b..37b8278623e 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -64,6 +64,44 @@ struct BostonState { hwaddr fdt_base; }; =20 +enum { + BOSTON_LOWDDR, + BOSTON_PCIE0, + BOSTON_PCIE1, + BOSTON_PCIE2, + BOSTON_PCIE2_MMIO, + BOSTON_CM, + BOSTON_GIC, + BOSTON_CDMM, + BOSTON_CPC, + BOSTON_PLATREG, + BOSTON_UART, + BOSTON_LCD, + BOSTON_FLASH, + BOSTON_PCIE1_MMIO, + BOSTON_PCIE0_MMIO, + BOSTON_HIGHDDR, +}; + +static const MemMapEntry boston_memmap[] =3D { + [BOSTON_LOWDDR] =3D { 0x0, 0x10000000 }, + [BOSTON_PCIE0] =3D { 0x10000000, 0x2000000 }, + [BOSTON_PCIE1] =3D { 0x12000000, 0x2000000 }, + [BOSTON_PCIE2] =3D { 0x14000000, 0x2000000 }, + [BOSTON_PCIE2_MMIO] =3D { 0x16000000, 0x100000 }, + [BOSTON_CM] =3D { 0x16100000, 0x20000 }, + [BOSTON_GIC] =3D { 0x16120000, 0x20000 }, + [BOSTON_CDMM] =3D { 0x16140000, 0x8000 }, + [BOSTON_CPC] =3D { 0x16200000, 0x8000 }, + [BOSTON_PLATREG] =3D { 0x17ffd000, 0x1000 }, + [BOSTON_UART] =3D { 0x17ffe000, 0x20 }, + [BOSTON_LCD] =3D { 0x17fff000, 0x8 }, + [BOSTON_FLASH] =3D { 0x18000000, 0x8000000 }, + [BOSTON_PCIE1_MMIO] =3D { 0x20000000, 0x20000000 }, + [BOSTON_PCIE0_MMIO] =3D { 0x40000000, 0x40000000 }, + [BOSTON_HIGHDDR] =3D { 0x80000000, 0x0 }, +}; + enum boston_plat_reg { PLAT_FPGA_BUILD =3D 0x00, PLAT_CORE_CL =3D 0x04, @@ -275,24 +313,24 @@ type_init(boston_register_types) =20 static void gen_firmware(uint32_t *p, hwaddr kernel_entry, hwaddr fdt_addr) { - const uint32_t cm_base =3D 0x16100000; - const uint32_t gic_base =3D 0x16120000; - const uint32_t cpc_base =3D 0x16200000; + uint64_t regaddr; =20 /* Move CM GCRs */ - bl_gen_write_ulong(&p, - cpu_mips_phys_to_kseg1(NULL, GCR_BASE_ADDR + GCR_BA= SE_OFS), - cm_base); + regaddr =3D cpu_mips_phys_to_kseg1(NULL, GCR_BASE_ADDR + GCR_BASE_OFS), + bl_gen_write_ulong(&p, regaddr, + boston_memmap[BOSTON_CM].base); =20 /* Move & enable GIC GCRs */ - bl_gen_write_ulong(&p, - cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_GIC_BASE= _OFS), - gic_base | GCR_GIC_BASE_GICEN_MSK); + regaddr =3D cpu_mips_phys_to_kseg1(NULL, boston_memmap[BOSTON_CM].base + + GCR_GIC_BASE_OFS), + bl_gen_write_ulong(&p, regaddr, + boston_memmap[BOSTON_GIC].base | GCR_GIC_BASE_GICEN= _MSK); =20 /* Move & enable CPC GCRs */ - bl_gen_write_ulong(&p, - cpu_mips_phys_to_kseg1(NULL, cm_base + GCR_CPC_BASE= _OFS), - cpc_base | GCR_CPC_BASE_CPCEN_MSK); + regaddr =3D cpu_mips_phys_to_kseg1(NULL, boston_memmap[BOSTON_CM].base + + GCR_CPC_BASE_OFS), + bl_gen_write_ulong(&p, regaddr, + boston_memmap[BOSTON_CPC].base | GCR_CPC_BASE_CPCEN= _MSK); =20 /* * Setup argument registers to follow the UHI boot protocol: @@ -333,8 +371,9 @@ static const void *boston_fdt_filter(void *opaque, cons= t void *fdt_orig, ram_low_sz =3D MIN(256 * MiB, machine->ram_size); ram_high_sz =3D machine->ram_size - ram_low_sz; qemu_fdt_setprop_sized_cells(fdt, "/memory@0", "reg", - 1, 0x00000000, 1, ram_low_sz, - 1, 0x90000000, 1, ram_high_sz); + 1, boston_memmap[BOSTON_LOWDDR].base, 1, ram_low_s= z, + 1, boston_memmap[BOSTON_HIGHDDR].base + ram_low_sz, + 1, ram_high_sz); =20 fdt =3D g_realloc(fdt, fdt_totalsize(fdt)); qemu_fdt_dumpdtb(fdt, fdt_sz); @@ -438,11 +477,15 @@ static void boston_mach_init(MachineState *machine) sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->cps), 0, 0, 1); =20 flash =3D g_new(MemoryRegion, 1); - memory_region_init_rom(flash, NULL, "boston.flash", 128 * MiB, - &error_fatal); - memory_region_add_subregion_overlap(sys_mem, 0x18000000, flash, 0); + memory_region_init_rom(flash, NULL, "boston.flash", + boston_memmap[BOSTON_FLASH].size, &error_fatal); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_FLASH].base, + flash, 0); =20 - memory_region_add_subregion_overlap(sys_mem, 0x80000000, machine->ram,= 0); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_HIGHDDR].base, + machine->ram, 0); =20 ddr_low_alias =3D g_new(MemoryRegion, 1); memory_region_init_alias(ddr_low_alias, NULL, "boston_low.ddr", @@ -451,32 +494,41 @@ static void boston_mach_init(MachineState *machine) memory_region_add_subregion_overlap(sys_mem, 0, ddr_low_alias, 0); =20 xilinx_pcie_init(sys_mem, 0, - 0x10000000, 32 * MiB, - 0x40000000, 1 * GiB, + boston_memmap[BOSTON_PCIE0].base, + boston_memmap[BOSTON_PCIE0].size, + boston_memmap[BOSTON_PCIE0_MMIO].base, + boston_memmap[BOSTON_PCIE0_MMIO].size, get_cps_irq(&s->cps, 2), false); =20 xilinx_pcie_init(sys_mem, 1, - 0x12000000, 32 * MiB, - 0x20000000, 512 * MiB, + boston_memmap[BOSTON_PCIE1].base, + boston_memmap[BOSTON_PCIE1].size, + boston_memmap[BOSTON_PCIE1_MMIO].base, + boston_memmap[BOSTON_PCIE1_MMIO].size, get_cps_irq(&s->cps, 1), false); =20 pcie2 =3D xilinx_pcie_init(sys_mem, 2, - 0x14000000, 32 * MiB, - 0x16000000, 1 * MiB, + boston_memmap[BOSTON_PCIE2].base, + boston_memmap[BOSTON_PCIE2].size, + boston_memmap[BOSTON_PCIE2_MMIO].base, + boston_memmap[BOSTON_PCIE2_MMIO].size, get_cps_irq(&s->cps, 0), true); =20 platreg =3D g_new(MemoryRegion, 1); memory_region_init_io(platreg, NULL, &boston_platreg_ops, s, - "boston-platregs", 0x1000); - memory_region_add_subregion_overlap(sys_mem, 0x17ffd000, platreg, 0); + "boston-platregs", + boston_memmap[BOSTON_PLATREG].size); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_PLATREG].base, platreg, 0); =20 - s->uart =3D serial_mm_init(sys_mem, 0x17ffe000, 2, + s->uart =3D serial_mm_init(sys_mem, boston_memmap[BOSTON_UART].base, 2, get_cps_irq(&s->cps, 3), 10000000, serial_hd(0), DEVICE_NATIVE_ENDIAN); =20 lcd =3D g_new(MemoryRegion, 1); memory_region_init_io(lcd, NULL, &boston_lcd_ops, s, "boston-lcd", 0x8= ); - memory_region_add_subregion_overlap(sys_mem, 0x17fff000, lcd, 0); + memory_region_add_subregion_overlap(sys_mem, + boston_memmap[BOSTON_LCD].base, lc= d, 0); =20 chr =3D qemu_chr_new("lcd", "vc:320x240", NULL); qemu_chr_fe_init(&s->lcd_display, chr, NULL); --=20 2.31.1