[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 05/10] hw/rx: RX MCU and target
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH 05/10] hw/rx: RX MCU and target |
Date: |
Fri, 5 Jun 2020 18:09:01 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
On 5/31/20 6:24 PM, Yoshinori Sato wrote:
> rx62n - RX62N MCU.
> rx-virt - RX QEMU virtual target.
> This has the same specifications as the gdb simulator.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
> include/hw/rx/rx.h | 7 ++
> include/hw/rx/rx62n.h | 91 ++++++++++++++++
> hw/rx/rx-virt.c | 143 +++++++++++++++++++++++++
> hw/rx/rx62n.c | 240 ++++++++++++++++++++++++++++++++++++++++++
> hw/rx/Kconfig | 13 +++
> hw/rx/Makefile.objs | 2 +
> 6 files changed, 496 insertions(+)
> create mode 100644 include/hw/rx/rx.h
> create mode 100644 include/hw/rx/rx62n.h
> create mode 100644 hw/rx/rx-virt.c
> create mode 100644 hw/rx/rx62n.c
> create mode 100644 hw/rx/Kconfig
> create mode 100644 hw/rx/Makefile.objs
>
[...]
> +static void register_tmr(RX62NState *s, int unit)
> +{
> + SysBusDevice *tmr;
> + int i, irqbase;
> +
> + object_initialize_child(OBJECT(s), "tmr[*]", &s->tmr[unit],
> + sizeof(RTMRState), TYPE_RENESAS_8TMR,
> + &error_abort, NULL);
> +
> + tmr = SYS_BUS_DEVICE(&s->tmr[unit]);
> + qdev_prop_set_uint64(DEVICE(tmr), "input-freq", RX62N_PCLK);
> +
> + qdev_init_nofail(DEVICE(tmr));
> + sysbus_mmio_map(tmr, 0, RX62N_TMRBASE + unit * 0x10);
> + irqbase = RX62N_TMR_IRQBASE + TMR_NR_IRQ * unit;
> + for (i = 0; i < TMR_NR_IRQ; i++) {
> + sysbus_connect_irq(tmr, i, s->irq[irqbase + i]);
> + }
> +}
> +
> +static void register_cmt(RX62NState *s, int unit)
> +{
> + SysBusDevice *cmt;
> + int i, irqbase;
> +
> + object_initialize_child(OBJECT(s), "cmt[*]", &s->cmt[unit],
> + sizeof(RTIMERState), TYPE_RENESAS_TIMER,
> + &error_abort, NULL);
> +
> + cmt = SYS_BUS_DEVICE(&s->cmt[unit]);
> + qdev_prop_set_uint64(DEVICE(cmt), "input-freq", RX62N_PCLK);
> + qdev_prop_set_int32(DEVICE(cmt), "feature", RTIMER_FEAT_CMT);
OK, single logical change, no problem.
> + qdev_init_nofail(DEVICE(cmt));
> + sysbus_mmio_map(cmt, 0, RX62N_CMTBASE + unit * 0x10);
> + irqbase = RX62N_CMT_IRQBASE + TIMER_CH_CMT * unit;
> + for (i = 0; i < TIMER_CH_CMT; i++) {
> + sysbus_connect_irq(cmt, i, s->irq[irqbase + i]);
> + }
> +}
> +
> +static void register_sci(RX62NState *s, int unit)
> +{
> + SysBusDevice *sci;
> + int i, irqbase;
> +
> + object_initialize_child(OBJECT(s), "sci[*]", &s->sci[unit],
> + sizeof(RSCIState), TYPE_RENESAS_SCI,
> + &error_abort, NULL);
> + sci = SYS_BUS_DEVICE(&s->sci[unit]);
> +
> + qdev_prop_set_chr(DEVICE(sci), "chardev", serial_hd(unit));
> + qdev_prop_set_uint64(DEVICE(sci), "input-freq", RX62N_PCLK);
> + qdev_prop_set_int32(DEVICE(sci), "feature", SCI_FEAT_SCIA);
> + qdev_prop_set_int32(DEVICE(sci), "register-size", 8);
> + qdev_init_nofail(DEVICE(sci));
> + sysbus_mmio_map(sci, 0, RX62N_SCIBASE + unit * 0x08);
> + irqbase = RX62N_SCI_IRQBASE + SCI_NR_IRQ * unit;
> + for (i = 0; i < SCI_NR_IRQ; i++) {
> + sysbus_connect_irq(sci, i, s->irq[irqbase + i]);
> + }
> +}[...]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 05/10] hw/rx: RX MCU and target,
Philippe Mathieu-Daudé <=