qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Joaquin de Andres" <me@xcancerberox.com.ar>,
	qemu-arm@nongnu.org, "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Esteban Bosse" <estebanbosse@gmail.com>
Subject: [PATCH v2 11/14] hw/arm/mps2: Add SPI devices
Date: Wed, 17 Jun 2020 07:52:02 +0200	[thread overview]
Message-ID: <20200617055205.3576-12-f4bug@amsat.org> (raw)
In-Reply-To: <20200617055205.3576-1-f4bug@amsat.org>

From 'Application Note AN385', chapter 3.9, SPI:

  The SMM implements five PL022 SPI modules.

Two pairs of modules share the same OR-gated IRQ.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/arm/mps2.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index e106123225..daa26f68d7 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -39,6 +39,7 @@
 #include "hw/timer/cmsdk-apb-dualtimer.h"
 #include "hw/misc/mps2-scc.h"
 #include "hw/misc/mps2-fpgaio.h"
+#include "hw/ssi/pl022.h"
 #include "hw/net/lan9118.h"
 #include "net/net.h"
 #include "hw/watchdog/cmsdk-apb-watchdog.h"
@@ -341,6 +342,29 @@ static void mps2_common_init(MachineState *machine)
     qdev_prop_set_uint32(DEVICE(&mms->fpgaio), "prescale-clk", 25000000);
     sysbus_realize(SYS_BUS_DEVICE(&mms->fpgaio), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(&mms->fpgaio), 0, 0x40028000);
+    sysbus_create_simple(TYPE_PL022, 0x40025000,        /* External ADC */
+                         qdev_get_gpio_in(armv7m, 22));
+    for (i = 0; i < 2; i++) {
+        static const int spi_irqno[] = {11, 24};
+        static const hwaddr spibase[] = {0x40020000,    /* APB */
+                                         0x40021000,    /* LCD */
+                                         0x40026000,    /* Shield0 */
+                                         0x40027000};   /* Shield1 */
+        DeviceState *orgate_dev;
+        Object *orgate;
+        int j;
+
+        orgate = object_new(TYPE_OR_IRQ);
+        object_property_set_int(orgate, 2, "num-lines", &error_fatal);
+        orgate_dev = DEVICE(orgate);
+        qdev_realize(orgate_dev, NULL, &error_fatal);
+        qdev_connect_gpio_out(orgate_dev, 0,
+                              qdev_get_gpio_in(armv7m, spi_irqno[i]));
+        for (j = 0; j < 2; j++) {
+            sysbus_create_simple(TYPE_PL022, spibase[2 * i + j],
+                                 qdev_get_gpio_in(orgate_dev, j));
+        }
+    }
 
     /* In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
-- 
2.21.3



  parent reply	other threads:[~2020-06-17  6:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-17  5:51 [PATCH v2 00/14] mps2: Add few more peripherals Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 01/14] hw/watchdog/cmsdk-apb-watchdog: Add trace event for lock status Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 02/14] hw/i2c/versatile_i2c: Add definitions for register addresses Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 03/14] hw/i2c/versatile_i2c: Add SCL/SDA definitions Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 04/14] hw/i2c: Add header for ARM SBCon two-wire serial bus interface Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 05/14] hw/arm: Use TYPE_VERSATILE_I2C instead of hardcoded string Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 06/14] hw/arm/mps2: Document CMSDK/FPGA APB subsystem sections Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 07/14] hw/arm/mps2: Rename CMSDK AHB peripheral region Philippe Mathieu-Daudé
2020-06-17  5:51 ` [PATCH v2 08/14] hw/arm/mps2: Add CMSDK APB watchdog device Philippe Mathieu-Daudé
2020-06-17  5:52 ` [PATCH v2 09/14] hw/arm/mps2: Add CMSDK AHB GPIO peripherals as unimplemented devices Philippe Mathieu-Daudé
2020-06-17  5:52 ` [PATCH v2 10/14] hw/arm/mps2: Map the FPGA I/O block Philippe Mathieu-Daudé
2020-06-17  5:52 ` Philippe Mathieu-Daudé [this message]
2020-06-17  5:52 ` [PATCH v2 12/14] hw/arm/mps2: Add I2C devices Philippe Mathieu-Daudé
2020-06-17  5:52 ` [PATCH v2 13/14] hw/arm/mps2: Add audio I2S interface as unimplemented device Philippe Mathieu-Daudé
2020-06-17  5:52 ` [PATCH v2 14/14] hw/arm/mps2-tz: Use the ARM SBCon two-wire serial bus interface Philippe Mathieu-Daudé
2020-06-17  6:27 ` [PATCH v2 00/14] mps2: Add few more peripherals 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=20200617055205.3576-12-f4bug@amsat.org \
    --to=f4bug@amsat.org \
    --cc=estebanbosse@gmail.com \
    --cc=me@xcancerberox.com.ar \
    --cc=peter.maydell@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).