From nobody Fri Nov 14 13:43:18 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1587924511; cv=none; d=zohomail.com; s=zohoarc; b=BbFr4bakdtWdIPk0uq+j7m9ZbobH8uCrudKNRE6derc27M7VU9wY5jb21Q7gs6qEKlweLggK0nqVnTHe0wBLORMb7nL0eoCEMTaxhJJ4Km+GQwJIRX6a59J44PA0XTJiUVLMkUknF6fY0+2D0RtJnp+tQkK433ikxAeeTQfqfwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587924511; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=K28qojJl+cpo/xLCUcWQv5uPEPvCRgaTFEEkbG3cNmE=; b=krBG/t7dsMzQiMHG6XrxPf1UC+GZQUxWJxie4/MLvRjWvDrsWu0boa+yhgmZJsi8NqaI0wNqVNDQKR1HrBeRn6JJeKqJKka8CilRLRf6d3UgItRi3rVJa3+JpD8SBv+E+EioSUkLaixBBERUZCQ5ISiE6Yp6qYkpdyhEPrB4neY= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1587924511073662.5373283003356; Sun, 26 Apr 2020 11:08:31 -0700 (PDT) Received: from localhost ([::1]:40846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSlhd-0004I1-Cb for importer@patchew.org; Sun, 26 Apr 2020 14:08:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33714) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jSlcV-000873-O5 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 14:03:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jSlcV-00089R-78 for qemu-devel@nongnu.org; Sun, 26 Apr 2020 14:03:11 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:58669) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jSlcU-000897-PV; Sun, 26 Apr 2020 14:03:10 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 1550A5C00A4; Sun, 26 Apr 2020 14:03:10 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Sun, 26 Apr 2020 14:03:10 -0400 Received: from ThinkpadX1Yoga3.localdomain (c-73-93-84-208.hsd1.ca.comcast.net [73.93.84.208]) by mail.messagingengine.com (Postfix) with ESMTPA id 4D21F3065E3B; Sun, 26 Apr 2020 14:03:09 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alistair23.me; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm3; bh=K28qojJl+cpo/ xLCUcWQv5uPEPvCRgaTFEEkbG3cNmE=; b=I10OQoXYZZ8Ktg9kF8Jwx5EUcazww MSZ3gQQzuX/KyF0HQFSqBGNozL187KV2iH/3bA7m4iFQMrl5UcMIHJjkgodNX0GG wvZbK+1L+4jGKY9ESr2Ojkp4YWweeB6vu87lNpR1/x/Lp2cOGcCnienr29H5+wvM Mtj0hRqQTfPGlGaUgfZUrfThNGecc3/hTAUogTF/jB0Z9cEKhaewnqaUggAxDoDd feX8fucxCqo/93C96yD726+OMlK2ncYFe6XKJMZ57L/tDuD3GvrhyyD+w5MQsMai jCgzkC+m8X3agWr9hE0cSGi0uhMalY8hnE7/cbNxczUsFzNzToSblAKtg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=K28qojJl+cpo/xLCUcWQv5uPEPvCRgaTFEEkbG3cNmE=; b=HCqW9FSl 3q2s/IlDpqs02622AaqNGng6AuKrxiqVoZZqyE/CYUeGC8qhwpswIGIFmTfPHkOQ fuMmhPu046qvnuiP9ivex7+GNRYr/cg6PQ5HeO/FOqXUM5kV5XALUMCFbkczWfY/ 15fjMb2UFGr3AD9K6GWQwJ6RdjQUolM5mmm2bjLdFX/rL8VPcmxwKidegO5MriVd z6OnDWXRRJ987q1JT1Q/z22EhbYV+s9BcMnhlpv117Hml3GhaGfMCq/U5X96/OB8 3rvrYf/OEJDCHLgSd8El7oRQLuuCwKy0BUftcLvYPvu4d6a0paFafoTD2M/dH+gg mMqIeLNyssdD0Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrheejgdduvdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvffufffkofgjfhgggfestdekre dtredttdenucfhrhhomheptehlihhsthgrihhrucfhrhgrnhgtihhsuceorghlihhsthgr ihhrsegrlhhishhtrghirhdvfedrmhgvqeenucfkphepjeefrdelfedrkeegrddvtdekne cuvehluhhsthgvrhfuihiivgepgeenucfrrghrrghmpehmrghilhhfrhhomheprghlihhs thgrihhrsegrlhhishhtrghirhdvfedrmhgv X-ME-Proxy: From: Alistair Francis To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 8/9] riscv/opentitan: Connect the UART device Date: Sat, 25 Apr 2020 04:29:29 -0700 Message-Id: <147e9843aa6e2f2f450ddc2324a420b9b0229a50.1587920572.git.alistair.francis@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=66.111.4.29; envelope-from=alistair@alistair23.me; helo=out5-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/04/26 14:02:38 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.111.4.29 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair.francis@wdc.com, palmer@dabbelt.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Alistair Francis Signed-off-by: Alistair Francis --- hw/riscv/opentitan.c | 24 ++++++++++++++++++++++-- include/hw/riscv/opentitan.h | 13 +++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c index 3a845fbb7b..81cd835e8b 100644 --- a/hw/riscv/opentitan.c +++ b/hw/riscv/opentitan.c @@ -96,6 +96,9 @@ static void riscv_lowrisc_ibex_soc_init(Object *obj) =20 sysbus_init_child_obj(obj, "plic", &s->plic, sizeof(s->plic), TYPE_IBEX_PLIC); + + sysbus_init_child_obj(obj, "uart", &s->uart, + sizeof(s->uart), TYPE_IBEX_UART); } =20 static void riscv_lowrisc_ibex_soc_realize(DeviceState *dev_soc, Error **e= rrp) @@ -137,8 +140,25 @@ static void riscv_lowrisc_ibex_soc_realize(DeviceState= *dev_soc, Error **errp) busdev =3D SYS_BUS_DEVICE(dev); sysbus_mmio_map(busdev, 0, memmap[IBEX_PLIC].base); =20 - create_unimplemented_device("riscv.lowrisc.ibex.uart", - memmap[IBEX_UART].base, memmap[IBEX_UART].size); + /* UART */ + dev =3D DEVICE(&(s->uart)); + qdev_prop_set_chr(dev, "chardev", serial_hd(0)); + object_property_set_bool(OBJECT(&s->uart), true, "realized", &err); + if (err !=3D NULL) { + error_propagate(errp, err); + return; + } + busdev =3D SYS_BUS_DEVICE(dev); + sysbus_mmio_map(busdev, 0, memmap[IBEX_UART].base); + sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(DEVICE(&s->plic), + IBEX_UART_TX_WATERMARK_IRQ)); + sysbus_connect_irq(busdev, 1, qdev_get_gpio_in(DEVICE(&s->plic), + IBEX_UART_RX_WATERMARK_IRQ)); + sysbus_connect_irq(busdev, 2, qdev_get_gpio_in(DEVICE(&s->plic), + IBEX_UART_TX_EMPTY_IRQ)); + sysbus_connect_irq(busdev, 3, qdev_get_gpio_in(DEVICE(&s->plic), + IBEX_UART_RX_OVERFLOW_IRQ)); + create_unimplemented_device("riscv.lowrisc.ibex.gpio", memmap[IBEX_GPIO].base, memmap[IBEX_GPIO].size); create_unimplemented_device("riscv.lowrisc.ibex.spi", diff --git a/include/hw/riscv/opentitan.h b/include/hw/riscv/opentitan.h index 8d6a09b696..825a3610bc 100644 --- a/include/hw/riscv/opentitan.h +++ b/include/hw/riscv/opentitan.h @@ -21,6 +21,7 @@ =20 #include "hw/riscv/riscv_hart.h" #include "hw/intc/ibex_plic.h" +#include "hw/char/ibex_uart.h" =20 #define TYPE_RISCV_IBEX_SOC "riscv.lowrisc.ibex.soc" #define RISCV_IBEX_SOC(obj) \ @@ -33,6 +34,7 @@ typedef struct LowRISCIbexSoCState { /*< public >*/ RISCVHartArrayState cpus; IbexPlicState plic; + IbexUartState uart; =20 MemoryRegion flash_mem; MemoryRegion rom; @@ -63,4 +65,15 @@ enum { IBEX_USBDEV, }; =20 +enum { + IBEX_UART_RX_PARITY_ERR_IRQ =3D 0x28, + IBEX_UART_RX_TIMEOUT_IRQ =3D 0x27, + IBEX_UART_RX_BREAK_ERR_IRQ =3D 0x26, + IBEX_UART_RX_FRAME_ERR_IRQ =3D 0x25, + IBEX_UART_RX_OVERFLOW_IRQ =3D 0x24, + IBEX_UART_TX_EMPTY_IRQ =3D 0x23, + IBEX_UART_RX_WATERMARK_IRQ =3D 0x22, + IBEX_UART_TX_WATERMARK_IRQ =3D 0x21 +}; + #endif --=20 2.26.2