xref: /qemu/include/hw/rx/rx62n.h (revision 1db2086e6a98c4e917d6618c97e730eaeb2a8ada)
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"
330c80f50fSYoshinori Sato 
340c80f50fSYoshinori Sato #define TYPE_RX62N_MCU "rx62n-mcu"
350c80f50fSYoshinori Sato #define RX62N_MCU(obj) OBJECT_CHECK(RX62NState, (obj), TYPE_RX62N_MCU)
360c80f50fSYoshinori Sato 
37*1db2086eSPhilippe Mathieu-Daudé #define TYPE_R5F562N7_MCU "r5f562n7-mcu"
38*1db2086eSPhilippe Mathieu-Daudé #define TYPE_R5F562N8_MCU "r5f562n8-mcu"
39*1db2086eSPhilippe Mathieu-Daudé 
400c80f50fSYoshinori Sato #define RX62N_NR_TMR    2
410c80f50fSYoshinori Sato #define RX62N_NR_CMT    2
420c80f50fSYoshinori Sato #define RX62N_NR_SCI    6
430c80f50fSYoshinori Sato 
440c80f50fSYoshinori Sato typedef struct RX62NState {
450c80f50fSYoshinori Sato     /*< private >*/
460c80f50fSYoshinori Sato     DeviceState parent_obj;
470c80f50fSYoshinori Sato     /*< public >*/
480c80f50fSYoshinori Sato 
490c80f50fSYoshinori Sato     RXCPU cpu;
500c80f50fSYoshinori Sato     RXICUState icu;
510c80f50fSYoshinori Sato     RTMRState tmr[RX62N_NR_TMR];
520c80f50fSYoshinori Sato     RCMTState cmt[RX62N_NR_CMT];
530c80f50fSYoshinori Sato     RSCIState sci[RX62N_NR_SCI];
540c80f50fSYoshinori Sato 
550c80f50fSYoshinori Sato     MemoryRegion *sysmem;
560c80f50fSYoshinori Sato     bool kernel;
570c80f50fSYoshinori Sato 
580c80f50fSYoshinori Sato     MemoryRegion iram;
590c80f50fSYoshinori Sato     MemoryRegion iomem1;
600c80f50fSYoshinori Sato     MemoryRegion d_flash;
610c80f50fSYoshinori Sato     MemoryRegion iomem2;
620c80f50fSYoshinori Sato     MemoryRegion iomem3;
630c80f50fSYoshinori Sato     MemoryRegion c_flash;
640c80f50fSYoshinori Sato     qemu_irq irq[NR_IRQS];
65*1db2086eSPhilippe Mathieu-Daudé 
66*1db2086eSPhilippe Mathieu-Daudé     /* Input Clock (XTAL) frequency */
67*1db2086eSPhilippe Mathieu-Daudé     uint32_t xtal_freq_hz;
68*1db2086eSPhilippe Mathieu-Daudé     /* Peripheral Module Clock frequency */
69*1db2086eSPhilippe Mathieu-Daudé     uint32_t pclk_freq_hz;
700c80f50fSYoshinori Sato } RX62NState;
710c80f50fSYoshinori Sato 
720c80f50fSYoshinori Sato #endif
73