From nobody Wed Nov 5 05:11:01 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1532702417407154.45276413549323; Fri, 27 Jul 2018 07:40:17 -0700 (PDT) Received: from localhost ([::1]:41597 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj3uc-0004Qk-Rl for importer@patchew.org; Fri, 27 Jul 2018 10:40:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj3sH-0003F9-HO for qemu-devel@nongnu.org; Fri, 27 Jul 2018 10:37:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj3sG-0008IW-Ge for qemu-devel@nongnu.org; Fri, 27 Jul 2018 10:37:45 -0400 Received: from greensocs.com ([193.104.36.180]:50602) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj3sB-0008Aa-Fd; Fri, 27 Jul 2018 10:37:39 -0400 Received: from localhost (localhost [127.0.0.1]) by greensocs.com (Postfix) with ESMTP id 2E30D4434B9; Fri, 27 Jul 2018 16:37:32 +0200 (CEST) Received: from greensocs.com ([127.0.0.1]) by localhost (gs-01.greensocs.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id sgUzPoqcCvsw; Fri, 27 Jul 2018 16:37:31 +0200 (CEST) Received: by greensocs.com (Postfix, from userid 998) id 4E104443552; Fri, 27 Jul 2018 16:37:31 +0200 (CEST) Received: from kouign-amann.hive.antfield.fr (antfield.tima.u-ga.fr [147.171.129.253]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: damien.hedde@greensocs.com) by greensocs.com (Postfix) with ESMTPSA id C3A34428994; Fri, 27 Jul 2018 16:37:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1532702252; bh=UBhdrBu2BfWci6XjZcmChBfVWClCxpRVoV2fRvnJnIE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=YHgyaG+SHy6PAzRacAZbfiZxsnljJ4404PXXsHuT9EbEEMJ7SX8Ak9gPAINnKi0li q/WUaDft4/ivuHR0UMkJCb83xJfdyCuMfBUTYLbRMlE32em9ONVYxW8hUBoKyNATm6 w2tKwGwtY30YfUlFa3cSJe3FBiwQ/PLaGbQzHUtw= X-Virus-Scanned: amavisd-new at greensocs.com Authentication-Results: gs-01.greensocs.com (amavisd-new); dkim=pass (1024-bit key) header.d=greensocs.com header.b=O2KzR2Sk; dkim=pass (1024-bit key) header.d=greensocs.com header.b=O2KzR2Sk DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1532702251; bh=UBhdrBu2BfWci6XjZcmChBfVWClCxpRVoV2fRvnJnIE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=O2KzR2Sku+YnMJ4m1cersMprpJILLXjlws4WagiFgUmzx4WrC0bzbZBw3t2dfS74K kqmog3mjJ32v+ZjAQnP8tpnaBKgFsM4E61iL8248qJB1BsUc3H1fuGF5RbYx2sruP6 R73IhI6UkFQ/JjSzWWShoJaIyjiFuCRU+Kz+IDnI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=greensocs.com; s=mail; t=1532702251; bh=UBhdrBu2BfWci6XjZcmChBfVWClCxpRVoV2fRvnJnIE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=O2KzR2Sku+YnMJ4m1cersMprpJILLXjlws4WagiFgUmzx4WrC0bzbZBw3t2dfS74K kqmog3mjJ32v+ZjAQnP8tpnaBKgFsM4E61iL8248qJB1BsUc3H1fuGF5RbYx2sruP6 R73IhI6UkFQ/JjSzWWShoJaIyjiFuCRU+Kz+IDnI= From: Damien Hedde To: qemu-devel@nongnu.org Date: Fri, 27 Jul 2018 16:37:23 +0200 Message-Id: <81e37f79d335d17d8802f127d59f89e263c50136.1532701430.git.damien.hedde@greensocs.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 193.104.36.180 Subject: [Qemu-devel] [RFC PATCH 4/6] cadence_uart: add clock/power gating support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@xilinx.com, peter.maydell@linaro.org, alistair@alistair23.me, mark.burton@greensocs.com, saipava@xilinx.com, qemu-arm@nongnu.org, Damien Hedde , pbonzini@redhat.com, luc.michel@greensocs.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Only discard input characters when unpowered/unclocked. As it is a sysbus device, mmio are already disabled when unpowered or unclocked. Signed-off-by: Damien Hedde --- hw/char/cadence_uart.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index fbdbd463bb..dd51d9a087 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -335,8 +335,14 @@ static void uart_write_tx_fifo(CadenceUARTState *s, co= nst uint8_t *buf, static void uart_receive(void *opaque, const uint8_t *buf, int size) { CadenceUARTState *s =3D opaque; + DeviceState *dev =3D DEVICE(s); uint32_t ch_mode =3D s->r[R_MR] & UART_MR_CHMODE; =20 + /* ignore characters if unpowered or unclocked */ + if (!dev->powered || !dev->clocked) { + return; + } + if (ch_mode =3D=3D NORMAL_MODE || ch_mode =3D=3D ECHO_MODE) { uart_write_rx_fifo(opaque, buf, size); } @@ -348,8 +354,14 @@ static void uart_receive(void *opaque, const uint8_t *= buf, int size) static void uart_event(void *opaque, int event) { CadenceUARTState *s =3D opaque; + DeviceState *dev =3D DEVICE(s); uint8_t buf =3D '\0'; =20 + /* ignore event if we're unpowered or unclocked */ + if (!dev->powered || !dev->clocked) { + return; + } + if (event =3D=3D CHR_EVENT_BREAK) { uart_write_rx_fifo(opaque, &buf, 1); } @@ -516,10 +528,19 @@ static int cadence_uart_post_load(void *opaque, int v= ersion_id) return 0; } =20 +static int cadence_uart_pre_load(void *opaque) +{ + DeviceState *s =3D opaque; + s->clocked =3D true; + s->powered =3D true; + return 0; +} + static const VMStateDescription vmstate_cadence_uart =3D { .name =3D "cadence_uart", - .version_id =3D 2, + .version_id =3D 3, .minimum_version_id =3D 2, + .pre_load =3D cadence_uart_pre_load, .post_load =3D cadence_uart_post_load, .fields =3D (VMStateField[]) { VMSTATE_UINT32_ARRAY(r, CadenceUARTState, CADENCE_UART_R_MAX), @@ -531,6 +552,8 @@ static const VMStateDescription vmstate_cadence_uart = =3D { VMSTATE_UINT32(tx_count, CadenceUARTState), VMSTATE_UINT32(rx_wpos, CadenceUARTState), VMSTATE_TIMER_PTR(fifo_trigger_handle, CadenceUARTState), + VMSTATE_BOOL_V(powered, DeviceState, 3), + VMSTATE_BOOL_V(clocked, DeviceState, 3), VMSTATE_END_OF_LIST() } }; --=20 2.18.0