mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	 5bddf92e68
			
		
	
	
		5bddf92e68
		
	
	
	
	
		
			
			On some boards, SCC config register CFG0 bit 0 controls whether parts of the board memory map are remapped. Support this with: * a device property scc-cfg0 so the board can specify the initial value of the CFG0 register * an outbound GPIO line which tracks bit 0 and which the board can wire up to provide the remapping Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20210504120912.23094-3-peter.maydell@linaro.org
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * ARM MPS2 SCC emulation
 | |
|  *
 | |
|  * Copyright (c) 2017 Linaro Limited
 | |
|  * Written by Peter Maydell
 | |
|  *
 | |
|  *  This program is free software; you can redistribute it and/or modify
 | |
|  *  it under the terms of the GNU General Public License version 2 or
 | |
|  *  (at your option) any later version.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * This is a model of the Serial Communication Controller (SCC)
 | |
|  * block found in most MPS FPGA images.
 | |
|  *
 | |
|  * QEMU interface:
 | |
|  *  + sysbus MMIO region 0: the register bank
 | |
|  *  + QOM property "scc-cfg4": value of the read-only CFG4 register
 | |
|  *  + QOM property "scc-aid": value of the read-only SCC_AID register
 | |
|  *  + QOM property "scc-id": value of the read-only SCC_ID register
 | |
|  *  + QOM property "scc-cfg0": reset value of the CFG0 register
 | |
|  *  + QOM property array "oscclk": reset values of the OSCCLK registers
 | |
|  *    (which are accessed via the SYS_CFG channel provided by this device)
 | |
|  *  + named GPIO output "remap": this tracks the value of CFG0 register
 | |
|  *    bit 0. Boards where this bit controls memory remapping should
 | |
|  *    connect this GPIO line to a function performing that mapping.
 | |
|  *    Boards where bit 0 has no special function should leave the GPIO
 | |
|  *    output disconnected.
 | |
|  */
 | |
| #ifndef MPS2_SCC_H
 | |
| #define MPS2_SCC_H
 | |
| 
 | |
| #include "hw/sysbus.h"
 | |
| #include "hw/misc/led.h"
 | |
| #include "qom/object.h"
 | |
| 
 | |
| #define TYPE_MPS2_SCC "mps2-scc"
 | |
| OBJECT_DECLARE_SIMPLE_TYPE(MPS2SCC, MPS2_SCC)
 | |
| 
 | |
| struct MPS2SCC {
 | |
|     /*< private >*/
 | |
|     SysBusDevice parent_obj;
 | |
| 
 | |
|     /*< public >*/
 | |
|     MemoryRegion iomem;
 | |
|     LEDState *led[8];
 | |
| 
 | |
|     uint32_t cfg0;
 | |
|     uint32_t cfg1;
 | |
|     uint32_t cfg2;
 | |
|     uint32_t cfg4;
 | |
|     uint32_t cfg5;
 | |
|     uint32_t cfg6;
 | |
|     uint32_t cfgdata_rtn;
 | |
|     uint32_t cfgdata_out;
 | |
|     uint32_t cfgctrl;
 | |
|     uint32_t cfgstat;
 | |
|     uint32_t dll;
 | |
|     uint32_t aid;
 | |
|     uint32_t id;
 | |
|     uint32_t num_oscclk;
 | |
|     uint32_t *oscclk;
 | |
|     uint32_t *oscclk_reset;
 | |
|     uint32_t cfg0_reset;
 | |
| 
 | |
|     qemu_irq remap;
 | |
| };
 | |
| 
 | |
| #endif
 |