From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: patches@linaro.org
Subject: [Qemu-devel] [PATCH 17/19] hw/misc/iotkit-secctl: Add remaining simple registers
Date: Tue, 20 Feb 2018 18:03:23 +0000 [thread overview]
Message-ID: <20180220180325.29818-18-peter.maydell@linaro.org> (raw)
In-Reply-To: <20180220180325.29818-1-peter.maydell@linaro.org>
Add remaining easy registers to iotkit-secctl:
* NSCCFG just routes its two bits out to external GPIO lines
* BRGINSTAT/BRGINTCLR/BRGINTEN can be dummies, because QEMU's
bus fabric can never report errors
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
include/hw/misc/iotkit-secctl.h | 4 ++++
hw/misc/iotkit-secctl.c | 32 ++++++++++++++++++++++++++------
2 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/include/hw/misc/iotkit-secctl.h b/include/hw/misc/iotkit-secctl.h
index ea3d62967f..faad0c9190 100644
--- a/include/hw/misc/iotkit-secctl.h
+++ b/include/hw/misc/iotkit-secctl.h
@@ -18,6 +18,7 @@
* + sysbus MMIO region 1 is the "non-secure privilege control block" registers
* + named GPIO output "sec_resp_cfg" indicating whether blocked accesses
* should RAZ/WI or bus error
+ * + named GPIO output "nsc_cfg" whose value tracks the NSCCFG register value
* Controlling the 2 APB PPCs in the IoTKit:
* + named GPIO outputs apb_ppc0_nonsec[0..2] and apb_ppc1_nonsec
* + named GPIO outputs apb_ppc0_ap[0..2] and apb_ppc1_ap
@@ -83,6 +84,7 @@ struct IoTKitSecCtl {
/*< public >*/
qemu_irq sec_resp_cfg;
+ qemu_irq nsc_cfg_irq;
MemoryRegion s_regs;
MemoryRegion ns_regs;
@@ -90,6 +92,8 @@ struct IoTKitSecCtl {
uint32_t secppcintstat;
uint32_t secppcinten;
uint32_t secrespcfg;
+ uint32_t nsccfg;
+ uint32_t brginten;
IoTKitSecCtlPPC apb[IOTS_NUM_APB_PPC];
IoTKitSecCtlPPC apbexp[IOTS_NUM_APB_EXP_PPC];
diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c
index 7e1ca184ab..2cefa0ec15 100644
--- a/hw/misc/iotkit-secctl.c
+++ b/hw/misc/iotkit-secctl.c
@@ -136,12 +136,24 @@ static MemTxResult iotkit_secctl_s_read(void *opaque, hwaddr addr,
case A_SECRESPCFG:
r = s->secrespcfg;
break;
+ case A_NSCCFG:
+ r = s->nsccfg;
+ break;
case A_SECPPCINTSTAT:
r = s->secppcintstat;
break;
case A_SECPPCINTEN:
r = s->secppcinten;
break;
+ case A_BRGINTSTAT:
+ /* QEMU's bus fabric can never report errors as it doesn't buffer
+ * writes, so we never report bridge interrupts.
+ */
+ r = 0;
+ break;
+ case A_BRGINTEN:
+ r = s->brginten;
+ break;
case A_AHBNSPPCEXP0:
case A_AHBNSPPCEXP1:
case A_AHBNSPPCEXP2:
@@ -174,12 +186,9 @@ static MemTxResult iotkit_secctl_s_read(void *opaque, hwaddr addr,
case A_APBSPPPCEXP3:
r = s->apbexp[offset_to_ppc_idx(offset)].sp;
break;
- case A_NSCCFG:
case A_SECMPCINTSTATUS:
case A_SECMSCINTSTAT:
case A_SECMSCINTEN:
- case A_BRGINTSTAT:
- case A_BRGINTEN:
case A_NSMSCEXP:
qemu_log_mask(LOG_UNIMP,
"IoTKit SecCtl S block read: "
@@ -299,6 +308,10 @@ static MemTxResult iotkit_secctl_s_write(void *opaque, hwaddr addr,
}
switch (offset) {
+ case A_NSCCFG:
+ s->nsccfg = value & 3;
+ qemu_set_irq(s->nsc_cfg_irq, s->nsccfg);
+ break;
case A_SECRESPCFG:
value &= 1;
s->secrespcfg = value;
@@ -312,6 +325,11 @@ static MemTxResult iotkit_secctl_s_write(void *opaque, hwaddr addr,
s->secppcinten = value & 0x00f000f3;
foreach_ppc(s, iotkit_secctl_ppc_update_irq_enable);
break;
+ case A_BRGINTCLR:
+ break;
+ case A_BRGINTEN:
+ s->brginten = value & 0xffff;
+ break;
case A_AHBNSPPCEXP0:
case A_AHBNSPPCEXP1:
case A_AHBNSPPCEXP2:
@@ -350,11 +368,8 @@ static MemTxResult iotkit_secctl_s_write(void *opaque, hwaddr addr,
ppc = &s->apbexp[offset_to_ppc_idx(offset)];
iotkit_secctl_ppc_sp_write(ppc, value);
break;
- case A_NSCCFG:
case A_SECMSCINTCLR:
case A_SECMSCINTEN:
- case A_BRGINTCLR:
- case A_BRGINTEN:
qemu_log_mask(LOG_UNIMP,
"IoTKit SecCtl S block write: "
"unimplemented offset 0x%x\n", offset);
@@ -553,6 +568,8 @@ static void iotkit_secctl_reset(DeviceState *dev)
s->secppcintstat = 0;
s->secppcinten = 0;
s->secrespcfg = 0;
+ s->nsccfg = 0;
+ s->brginten = 0;
foreach_ppc(s, iotkit_secctl_reset_ppc);
}
@@ -623,6 +640,7 @@ static void iotkit_secctl_init(Object *obj)
}
qdev_init_gpio_out_named(dev, &s->sec_resp_cfg, "sec_resp_cfg", 1);
+ qdev_init_gpio_out_named(dev, &s->nsc_cfg_irq, "nsc_cfg", 1);
memory_region_init_io(&s->s_regs, obj, &iotkit_secctl_s_ops,
s, "iotkit-secctl-s-regs", 0x1000);
@@ -652,6 +670,8 @@ static const VMStateDescription iotkit_secctl_vmstate = {
VMSTATE_UINT32(secppcintstat, IoTKitSecCtl),
VMSTATE_UINT32(secppcinten, IoTKitSecCtl),
VMSTATE_UINT32(secrespcfg, IoTKitSecCtl),
+ VMSTATE_UINT32(nsccfg, IoTKitSecCtl),
+ VMSTATE_UINT32(brginten, IoTKitSecCtl),
VMSTATE_STRUCT_ARRAY(apb, IoTKitSecCtl, IOTS_NUM_APB_PPC, 1,
iotkit_secctl_ppc_vmstate, IoTKitSecCtlPPC),
VMSTATE_STRUCT_ARRAY(apbexp, IoTKitSecCtl, IOTS_NUM_APB_EXP_PPC, 1,
--
2.16.1
next prev parent reply other threads:[~2018-02-20 18:03 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-20 18:03 [Qemu-devel] [PATCH 00/19] Add Cortex-M33 and mps2-an505 board model Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 01/19] loader: Add new load_ramdisk_as() Peter Maydell
2018-02-24 4:40 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 02/19] hw/arm/boot: Honour CPU's address space for image loads Peter Maydell
2018-02-24 4:56 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 03/19] hw/arm/armv7m: " Peter Maydell
2018-02-24 5:08 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 04/19] target/arm: Define an IDAU interface Peter Maydell
2018-02-27 19:32 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 05/19] armv7m: Forward idau property to CPU object Peter Maydell
2018-02-27 19:53 ` Richard Henderson
2018-03-01 16:00 ` [Qemu-devel] [Qemu-arm] " Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 06/19] target/arm: Define init-svtor property for the reset secure VTOR value Peter Maydell
2018-02-27 20:18 ` Richard Henderson
2018-03-01 12:40 ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 07/19] armv7m: Forward init-svtor property to CPU object Peter Maydell
2018-02-27 20:26 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 08/19] target/arm: Add Cortex-M33 Peter Maydell
2018-02-27 20:47 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 09/19] hw/misc/unimp: Move struct to header file Peter Maydell
2018-02-20 18:27 ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-02-27 20:50 ` [Qemu-devel] " Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 10/19] include/hw/or-irq.h: Add missing include guard Peter Maydell
2018-02-20 18:25 ` Philippe Mathieu-Daudé
2018-02-27 20:51 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 11/19] qdev: Add new qdev_init_gpio_in_named_with_opaque() Peter Maydell
2018-02-20 18:26 ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-02-27 20:52 ` [Qemu-devel] " Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 12/19] hw/core/split-irq: Device that splits IRQ lines Peter Maydell
2018-02-27 20:58 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 13/19] hw/misc/mps2-fpgaio: FPGA control block for MPS2 AN505 Peter Maydell
2018-02-27 21:11 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 14/19] hw/misc/tz-ppc: Model TrustZone peripheral protection controller Peter Maydell
2018-02-27 21:36 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 15/19] hw/misc/iotkit-secctl: Arm IoT Kit security controller initial skeleton Peter Maydell
2018-02-27 21:44 ` Richard Henderson
2018-03-01 12:44 ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 16/19] hw/misc/iotkit-secctl: Add handling for PPCs Peter Maydell
2018-02-27 21:54 ` Richard Henderson
2018-02-20 18:03 ` Peter Maydell [this message]
2018-02-27 22:00 ` [Qemu-devel] [PATCH 17/19] hw/misc/iotkit-secctl: Add remaining simple registers Richard Henderson
2018-03-01 12:47 ` Peter Maydell
2018-02-20 18:03 ` [Qemu-devel] [PATCH 18/19] hw/arm/iotkit: Model Arm IOT Kit Peter Maydell
2018-02-27 22:49 ` Richard Henderson
2018-02-20 18:03 ` [Qemu-devel] [PATCH 19/19] mps2-an505: New board model: MPS2 with AN505 Cortex-M33 FPGA image Peter Maydell
2018-02-21 10:30 ` Igor Mammedov
2018-03-01 12:50 ` Peter Maydell
2018-02-27 22:50 ` Richard Henderson
2018-02-22 19:03 ` [Qemu-devel] [PATCH 00/19] Add Cortex-M33 and mps2-an505 board model no-reply
2018-02-22 19:11 ` Peter Maydell
2018-02-22 21:55 ` Eric Blake
2018-02-24 6:19 ` no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180220180325.29818-18-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=patches@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).