hw/xtensa: add support for ML605 and KC705 FPGA board
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
		
							parent
							
								
									105a060188
								
							
						
					
					
						commit
						e0db904d1d
					
				| @ -40,6 +40,7 @@ | ||||
| #include "xtensa_bootparam.h" | ||||
| 
 | ||||
| typedef struct LxBoardDesc { | ||||
|     hwaddr flash_base; | ||||
|     size_t flash_size; | ||||
|     size_t flash_sector_size; | ||||
|     size_t sram_size; | ||||
| @ -219,7 +220,7 @@ static void lx_init(const LxBoardDesc *board, QEMUMachineInitArgs *args) | ||||
| 
 | ||||
|     dinfo = drive_get(IF_PFLASH, 0, 0); | ||||
|     if (dinfo) { | ||||
|         flash = pflash_cfi01_register(0xf8000000, | ||||
|         flash = pflash_cfi01_register(board->flash_base, | ||||
|                 NULL, "lx60.io.flash", board->flash_size, | ||||
|                 dinfo->bdrv, board->flash_sector_size, | ||||
|                 board->flash_size / board->flash_sector_size, | ||||
| @ -265,7 +266,9 @@ static void lx_init(const LxBoardDesc *board, QEMUMachineInitArgs *args) | ||||
|             MemoryRegion *flash_io = g_malloc(sizeof(*flash_io)); | ||||
| 
 | ||||
|             memory_region_init_alias(flash_io, NULL, "lx60.flash", | ||||
|                     flash_mr, 0, board->flash_size); | ||||
|                     flash_mr, 0, | ||||
|                     board->flash_size < 0x02000000 ? | ||||
|                     board->flash_size : 0x02000000); | ||||
|             memory_region_add_subregion(system_memory, 0xfe000000, | ||||
|                     flash_io); | ||||
|         } | ||||
| @ -275,7 +278,8 @@ static void lx_init(const LxBoardDesc *board, QEMUMachineInitArgs *args) | ||||
| static void xtensa_lx60_init(QEMUMachineInitArgs *args) | ||||
| { | ||||
|     static const LxBoardDesc lx60_board = { | ||||
|         .flash_size = 0x400000, | ||||
|         .flash_base = 0xf8000000, | ||||
|         .flash_size = 0x00400000, | ||||
|         .flash_sector_size = 0x10000, | ||||
|         .sram_size = 0x20000, | ||||
|     }; | ||||
| @ -285,13 +289,36 @@ static void xtensa_lx60_init(QEMUMachineInitArgs *args) | ||||
| static void xtensa_lx200_init(QEMUMachineInitArgs *args) | ||||
| { | ||||
|     static const LxBoardDesc lx200_board = { | ||||
|         .flash_size = 0x1000000, | ||||
|         .flash_base = 0xf8000000, | ||||
|         .flash_size = 0x01000000, | ||||
|         .flash_sector_size = 0x20000, | ||||
|         .sram_size = 0x2000000, | ||||
|     }; | ||||
|     lx_init(&lx200_board, args); | ||||
| } | ||||
| 
 | ||||
| static void xtensa_ml605_init(QEMUMachineInitArgs *args) | ||||
| { | ||||
|     static const LxBoardDesc ml605_board = { | ||||
|         .flash_base = 0xf8000000, | ||||
|         .flash_size = 0x02000000, | ||||
|         .flash_sector_size = 0x20000, | ||||
|         .sram_size = 0x2000000, | ||||
|     }; | ||||
|     lx_init(&ml605_board, args); | ||||
| } | ||||
| 
 | ||||
| static void xtensa_kc705_init(QEMUMachineInitArgs *args) | ||||
| { | ||||
|     static const LxBoardDesc kc705_board = { | ||||
|         .flash_base = 0xf0000000, | ||||
|         .flash_size = 0x08000000, | ||||
|         .flash_sector_size = 0x20000, | ||||
|         .sram_size = 0x2000000, | ||||
|     }; | ||||
|     lx_init(&kc705_board, args); | ||||
| } | ||||
| 
 | ||||
| static QEMUMachine xtensa_lx60_machine = { | ||||
|     .name = "lx60", | ||||
|     .desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")", | ||||
| @ -306,10 +333,26 @@ static QEMUMachine xtensa_lx200_machine = { | ||||
|     .max_cpus = 4, | ||||
| }; | ||||
| 
 | ||||
| static QEMUMachine xtensa_ml605_machine = { | ||||
|     .name = "ml605", | ||||
|     .desc = "ml605 EVB (" XTENSA_DEFAULT_CPU_MODEL ")", | ||||
|     .init = xtensa_ml605_init, | ||||
|     .max_cpus = 4, | ||||
| }; | ||||
| 
 | ||||
| static QEMUMachine xtensa_kc705_machine = { | ||||
|     .name = "kc705", | ||||
|     .desc = "kc705 EVB (" XTENSA_DEFAULT_CPU_MODEL ")", | ||||
|     .init = xtensa_kc705_init, | ||||
|     .max_cpus = 4, | ||||
| }; | ||||
| 
 | ||||
| static void xtensa_lx_machines_init(void) | ||||
| { | ||||
|     qemu_register_machine(&xtensa_lx60_machine); | ||||
|     qemu_register_machine(&xtensa_lx200_machine); | ||||
|     qemu_register_machine(&xtensa_ml605_machine); | ||||
|     qemu_register_machine(&xtensa_kc705_machine); | ||||
| } | ||||
| 
 | ||||
| machine_init(xtensa_lx_machines_init); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Max Filippov
						Max Filippov