From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgFZl-0002Dd-8K for qemu-devel@nongnu.org; Sun, 27 Sep 2015 13:17:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZgFZk-0001ko-B0 for qemu-devel@nongnu.org; Sun, 27 Sep 2015 13:17:25 -0400 Received: from mail-la0-x22f.google.com ([2a00:1450:4010:c03::22f]:35202) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgFZk-0001jm-4g for qemu-devel@nongnu.org; Sun, 27 Sep 2015 13:17:24 -0400 Received: by laer8 with SMTP id r8so9540951lae.2 for ; Sun, 27 Sep 2015 10:17:23 -0700 (PDT) From: Max Filippov Date: Sun, 27 Sep 2015 20:16:53 +0300 Message-Id: <1443374214-27149-3-git-send-email-jcmvbkbc@gmail.com> In-Reply-To: <1443374214-27149-1-git-send-email-jcmvbkbc@gmail.com> References: <1443374214-27149-1-git-send-email-jcmvbkbc@gmail.com> Subject: [Qemu-devel] [PATCH 2/3] target-xtensa: xtfpga: attach FLASH to system IO List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Max Filippov XTFPGA FLASH is tied to XTFPGA system IO block. It's not very important for systems with MMU where system IO block is visible at single location, but it's important for noMMU systems, where system IO block is accessible through two separate physical address ranges. Map XTFPGA FLASH to system IO block and fix offsets used for mapping. Signed-off-by: Max Filippov --- hw/xtensa/xtfpga.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 72350f1..d4b9afb 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -247,16 +247,20 @@ static void lx_init(const LxBoardDesc *board, MachineState *machine) dinfo = drive_get(IF_PFLASH, 0, 0); if (dinfo) { - flash = pflash_cfi01_register(board->flash_base, - NULL, "lx60.io.flash", board->flash_size, - blk_by_legacy_dinfo(dinfo), - board->flash_sector_size, - board->flash_size / board->flash_sector_size, - 4, 0x0000, 0x0000, 0x0000, 0x0000, be); + SysBusDevice *s; + + flash = pflash_cfi01_init(NULL, "lx60.io.flash", board->flash_size, + blk_by_legacy_dinfo(dinfo), + board->flash_sector_size, + board->flash_size / board->flash_sector_size, + 4, 0x0000, 0x0000, 0x0000, 0x0000, be); if (flash == NULL) { error_report("unable to mount pflash"); exit(EXIT_FAILURE); } + s = SYS_BUS_DEVICE(flash); + memory_region_add_subregion(system_io, board->flash_base, + sysbus_mmio_get_region(s, 0)); } /* Use presence of kernel file name as 'boot from SRAM' switch. */ @@ -386,7 +390,7 @@ static void lx_init(const LxBoardDesc *board, MachineState *machine) static void xtensa_lx60_init(MachineState *machine) { static const LxBoardDesc lx60_board = { - .flash_base = 0xf8000000, + .flash_base = 0x08000000, .flash_size = 0x00400000, .flash_sector_size = 0x10000, .sram_size = 0x20000, @@ -397,7 +401,7 @@ static void xtensa_lx60_init(MachineState *machine) static void xtensa_lx200_init(MachineState *machine) { static const LxBoardDesc lx200_board = { - .flash_base = 0xf8000000, + .flash_base = 0x08000000, .flash_size = 0x01000000, .flash_sector_size = 0x20000, .sram_size = 0x2000000, @@ -408,7 +412,7 @@ static void xtensa_lx200_init(MachineState *machine) static void xtensa_ml605_init(MachineState *machine) { static const LxBoardDesc ml605_board = { - .flash_base = 0xf8000000, + .flash_base = 0x08000000, .flash_size = 0x01000000, .flash_sector_size = 0x20000, .sram_size = 0x2000000, @@ -419,7 +423,7 @@ static void xtensa_ml605_init(MachineState *machine) static void xtensa_kc705_init(MachineState *machine) { static const LxBoardDesc kc705_board = { - .flash_base = 0xf0000000, + .flash_base = 0x00000000, .flash_size = 0x08000000, .flash_boot_base = 0x06000000, .flash_sector_size = 0x20000, -- 1.8.1.4