xref: /qemu/include/hw/rx/rx62n.h (revision db1015e92e04835c9eb50c29625fe566d1202dbd)
10c80f50fSYoshinori Sato /*
20c80f50fSYoshinori Sato  * RX62N MCU Object
30c80f50fSYoshinori Sato  *
40c80f50fSYoshinori Sato  * Datasheet: RX62N Group, RX621 Group User's Manual: Hardware
50c80f50fSYoshinori Sato  *            (Rev.1.40 R01UH0033EJ0140)
60c80f50fSYoshinori Sato  *
70c80f50fSYoshinori Sato  * Copyright (c) 2019 Yoshinori Sato
80c80f50fSYoshinori Sato  *
90c80f50fSYoshinori Sato  * SPDX-License-Identifier: GPL-2.0-or-later
100c80f50fSYoshinori Sato  *
110c80f50fSYoshinori Sato  * This program is free software; you can redistribute it and/or modify it
120c80f50fSYoshinori Sato  * under the terms and conditions of the GNU General Public License,
130c80f50fSYoshinori Sato  * version 2 or later, as published by the Free Software Foundation.
140c80f50fSYoshinori Sato  *
150c80f50fSYoshinori Sato  * This program is distributed in the hope it will be useful, but WITHOUT
160c80f50fSYoshinori Sato  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
170c80f50fSYoshinori Sato  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
180c80f50fSYoshinori Sato  * more details.
190c80f50fSYoshinori Sato  *
200c80f50fSYoshinori Sato  * You should have received a copy of the GNU General Public License along with
210c80f50fSYoshinori Sato  * this program.  If not, see <http://www.gnu.org/licenses/>.
220c80f50fSYoshinori Sato  */
230c80f50fSYoshinori Sato 
240c80f50fSYoshinori Sato #ifndef HW_RX_RX62N_MCU_H
250c80f50fSYoshinori Sato #define HW_RX_RX62N_MCU_H
260c80f50fSYoshinori Sato 
270c80f50fSYoshinori Sato #include "target/rx/cpu.h"
280c80f50fSYoshinori Sato #include "hw/intc/rx_icu.h"
290c80f50fSYoshinori Sato #include "hw/timer/renesas_tmr.h"
300c80f50fSYoshinori Sato #include "hw/timer/renesas_cmt.h"
310c80f50fSYoshinori Sato #include "hw/char/renesas_sci.h"
320c80f50fSYoshinori Sato #include "qemu/units.h"
33*db1015e9SEduardo Habkost #include "qom/object.h"
340c80f50fSYoshinori Sato 
350c80f50fSYoshinori Sato #define TYPE_RX62N_MCU "rx62n-mcu"
36*db1015e9SEduardo Habkost typedef struct RX62NState RX62NState;
370c80f50fSYoshinori Sato #define RX62N_MCU(obj) OBJECT_CHECK(RX62NState, (obj), TYPE_RX62N_MCU)
380c80f50fSYoshinori Sato 
391db2086eSPhilippe Mathieu-Daudé #define TYPE_R5F562N7_MCU "r5f562n7-mcu"
401db2086eSPhilippe Mathieu-Daudé #define TYPE_R5F562N8_MCU "r5f562n8-mcu"
411db2086eSPhilippe Mathieu-Daudé 
42bda19d7bSYoshinori Sato #define EXT_CS_BASE         0x01000000
43bda19d7bSYoshinori Sato #define VECTOR_TABLE_BASE   0xffffff80
44bda19d7bSYoshinori Sato #define RX62N_CFLASH_BASE   0xfff80000
45bda19d7bSYoshinori Sato 
460c80f50fSYoshinori Sato #define RX62N_NR_TMR    2
470c80f50fSYoshinori Sato #define RX62N_NR_CMT    2
480c80f50fSYoshinori Sato #define RX62N_NR_SCI    6
490c80f50fSYoshinori Sato 
50*db1015e9SEduardo Habkost struct RX62NState {
510c80f50fSYoshinori Sato     /*< private >*/
520c80f50fSYoshinori Sato     DeviceState parent_obj;
530c80f50fSYoshinori Sato     /*< public >*/
540c80f50fSYoshinori Sato 
550c80f50fSYoshinori Sato     RXCPU cpu;
560c80f50fSYoshinori Sato     RXICUState icu;
570c80f50fSYoshinori Sato     RTMRState tmr[RX62N_NR_TMR];
580c80f50fSYoshinori Sato     RCMTState cmt[RX62N_NR_CMT];
590c80f50fSYoshinori Sato     RSCIState sci[RX62N_NR_SCI];
600c80f50fSYoshinori Sato 
610c80f50fSYoshinori Sato     MemoryRegion *sysmem;
620c80f50fSYoshinori Sato     bool kernel;
630c80f50fSYoshinori Sato 
640c80f50fSYoshinori Sato     MemoryRegion iram;
650c80f50fSYoshinori Sato     MemoryRegion iomem1;
660c80f50fSYoshinori Sato     MemoryRegion d_flash;
670c80f50fSYoshinori Sato     MemoryRegion iomem2;
680c80f50fSYoshinori Sato     MemoryRegion iomem3;
690c80f50fSYoshinori Sato     MemoryRegion c_flash;
700c80f50fSYoshinori Sato     qemu_irq irq[NR_IRQS];
711db2086eSPhilippe Mathieu-Daudé 
721db2086eSPhilippe Mathieu-Daudé     /* Input Clock (XTAL) frequency */
731db2086eSPhilippe Mathieu-Daudé     uint32_t xtal_freq_hz;
741db2086eSPhilippe Mathieu-Daudé     /* Peripheral Module Clock frequency */
751db2086eSPhilippe Mathieu-Daudé     uint32_t pclk_freq_hz;
76*db1015e9SEduardo Habkost };
770c80f50fSYoshinori Sato 
780c80f50fSYoshinori Sato #endif
79