1 /* 2 * ARM MPS2 SCC emulation 3 * 4 * Copyright (c) 2017 Linaro Limited 5 * Written by Peter Maydell 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 or 9 * (at your option) any later version. 10 */ 11 12 /* 13 * This is a model of the Serial Communication Controller (SCC) 14 * block found in most MPS FPGA images. 15 * 16 * QEMU interface: 17 * + sysbus MMIO region 0: the register bank 18 * + QOM property "scc-cfg4": value of the read-only CFG4 register 19 * + QOM property "scc-aid": value of the read-only SCC_AID register 20 * + QOM property "scc-id": value of the read-only SCC_ID register 21 * + QOM property "scc-cfg0": reset value of the CFG0 register 22 * + QOM property array "oscclk": reset values of the OSCCLK registers 23 * (which are accessed via the SYS_CFG channel provided by this device) 24 * + named GPIO output "remap": this tracks the value of CFG0 register 25 * bit 0. Boards where this bit controls memory remapping should 26 * connect this GPIO line to a function performing that mapping. 27 * Boards where bit 0 has no special function should leave the GPIO 28 * output disconnected. 29 */ 30 #ifndef MPS2_SCC_H 31 #define MPS2_SCC_H 32 33 #include "hw/sysbus.h" 34 #include "hw/misc/led.h" 35 #include "qom/object.h" 36 37 #define TYPE_MPS2_SCC "mps2-scc" 38 OBJECT_DECLARE_SIMPLE_TYPE(MPS2SCC, MPS2_SCC) 39 40 struct MPS2SCC { 41 /*< private >*/ 42 SysBusDevice parent_obj; 43 44 /*< public >*/ 45 MemoryRegion iomem; 46 LEDState *led[8]; 47 48 uint32_t cfg0; 49 uint32_t cfg1; 50 uint32_t cfg2; 51 uint32_t cfg4; 52 uint32_t cfg5; 53 uint32_t cfg6; 54 uint32_t cfgdata_rtn; 55 uint32_t cfgdata_out; 56 uint32_t cfgctrl; 57 uint32_t cfgstat; 58 uint32_t dll; 59 uint32_t aid; 60 uint32_t id; 61 uint32_t num_oscclk; 62 uint32_t *oscclk; 63 uint32_t *oscclk_reset; 64 uint32_t cfg0_reset; 65 66 qemu_irq remap; 67 }; 68 69 #endif 70