From patchwork Thu Sep 16 21:48:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1529063 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.a=rsa-sha256 header.s=dkim.wdc.com header.b=Rz1VsEiN; dkim=pass (2048-bit key; unprotected) header.d=opensource.wdc.com header.i=@opensource.wdc.com header.a=rsa-sha256 header.s=dkim header.b=Togd02xp; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H9W9y02lcz9sVw for ; Fri, 17 Sep 2021 07:56:05 +1000 (AEST) Received: from localhost ([::1]:36790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQzMR-0007oM-Mw for incoming@patchwork.ozlabs.org; Thu, 16 Sep 2021 17:56:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56856) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQzH1-0005ws-2d for qemu-devel@nongnu.org; Thu, 16 Sep 2021 17:50:27 -0400 Received: from esa6.hgst.iphmx.com ([216.71.154.45]:5550) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQzGy-0002V0-RI for qemu-devel@nongnu.org; Thu, 16 Sep 2021 17:50:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1631829025; x=1663365025; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d+7i1/ikkPN4/VNr77qOp15/AgdcbLQRSk33SZZi9l4=; b=Rz1VsEiNKdCmu3xva5F5P3/Wo62A3Hg/GOjQ7qCNiMwOrWZ1n2N2ai3S fBxxPyW3xBX9wWEUrYBJ1+zRZ2zM+HoEQ+LgZoSwv7vDXnGjTK+Ie2DQt 1cPF+CG7IpHKjf3qdi35r5HxhmNoneSUD37rT4fOjTMblK1vGERfG5lmC Npzpxe8+ZJiQf2H30MqZqkaHRzwILsEcRK72hhFY3VZoGC0zOkZOByRIg 9eH0VeKhe9Iu5//Fa1r0h8Yx8rPVFQPjMMHojFPt2Fri1rzFxJP/2sQLf dDcna0/F1lvRYh/NeA8STaOJm3j5GpjXfHNv9L268iiY19gs1rkfBKhei A==; X-IronPort-AV: E=Sophos;i="5.85,299,1624291200"; d="scan'208";a="180726606" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 17 Sep 2021 05:50:25 +0800 IronPort-SDR: 5JK3RwLnjNGDDAG/Tr3A7YaDBGiT3b5L0o2US5bGx0kzyoNgVw/nZM2yrumSfmCqnF5/dtXpZ+ VMFXs8xdrAUrPOZ1wc8+gePBSu3L+u0ZX9PoRXY8Di+tuyuaI1Zy4K9Tt2A6Is1+Fa4G2vIdkE mjAf5PlzK9XDGjXoKkzaRSeUlVLn+kJchQ69dDpIqZUzOpBWO0yjly7QzRbeOrym+pD6zFG2Ja MbO3oDTy7VIJ2mDizonKRr6ufwiXNr4/3JgQc9J1JizYfw1/OZl9ZCnYv4esRWpl8ibTZom8VT tHKUCtZOpMYYj3aw6AV+B0ZJ Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2021 14:26:44 -0700 IronPort-SDR: OH2D/+k+405UWb17ubhwMrBXHQp10qDxqywufjKP5sTf8XsAJ0LpsfqNWtrhb21oJnzAholea+ ArDEhN8ggK/RK0fd5gkijHv5wx2yyOMWw67TuTnvhxK/UE98L7RBwSWz5ea5yXgovMKOGaGbvB 9uVO7rVlyuIWuIPEhOm2Iu4Jvzo2LH+Ci1xRDke1zXMqDI0tdpTDzWLJXy2ZgtoCBV/VK+nAra 42WUz+Ix/mFFZHmjANTxQXPMxwlWE4nY9Nz43jUeMUWfgMDJXg5JF4Bi4LBX0zfmJg/1IQqYKZ bSA= WDCIronportException: Internal Received: from usg-ed-osssrv.wdc.com ([10.3.10.180]) by uls-op-cesaip02.wdc.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2021 14:50:24 -0700 Received: from usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTP id 4H9W3M6D81z1RwsC for ; Thu, 16 Sep 2021 14:50:23 -0700 (PDT) Authentication-Results: usg-ed-osssrv.wdc.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=opensource.wdc.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d= opensource.wdc.com; h=content-transfer-encoding:mime-version :references:in-reply-to:x-mailer:message-id:date:subject:to :from; s=dkim; t=1631829023; x=1634421024; bh=d+7i1/ikkPN4/VNr77 qOp15/AgdcbLQRSk33SZZi9l4=; b=Togd02xpVSlsy4Gg7xk0zIaiQhRmw2nhgj 6ctV8LyvwOnY1C+H8NAM0SbkFlvgTvSJCt8dNnyTT9Czl3fZ1p/Yh9rs/lekJnKn 4OOrlfJQzc7fKJTw5I4uKIBTck6fdco+Ow87LptC/qVQc4AVSDeiZrQmowK7iP3W gYzdivoI5IrNM8QyTHVYI5tCAxjps0k8AxFQgIWwe6UFqh75BgUDJDd4miG/off5 WjGc0bS2ATDiDMGHcxHApOnt/7DT21BX6KR6YmPlNE+K/c7fHvbgi0XUfUZQZNEL MXXOZP9tqFICI+Ti6Pl3aaliZxAdXDBg0j7vInKXMtY2RhV/Xdyw== X-Virus-Scanned: amavisd-new at usg-ed-osssrv.wdc.com Received: from usg-ed-osssrv.wdc.com ([127.0.0.1]) by usg-ed-osssrv.wdc.com (usg-ed-osssrv.wdc.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id E8vovPfF00fG for ; Thu, 16 Sep 2021 14:50:23 -0700 (PDT) Received: from toolbox.alistair23.me (unknown [10.225.165.23]) by usg-ed-osssrv.wdc.com (Postfix) with ESMTPSA id 4H9W3H1ngwz1Rws4; Thu, 16 Sep 2021 14:50:18 -0700 (PDT) From: Alistair Francis To: qemu-devel@nongnu.org, peter.maydell@linaro.org Cc: alistair23@gmail.com, Frank Chang , Max Hsu , Bin Meng , Alistair Francis Subject: [PULL 14/21] hw/dma: sifive_pdma: reset Next* registers when Control.claim is set Date: Fri, 17 Sep 2021 07:48:57 +1000 Message-Id: <20210916214904.734206-15-alistair.francis@opensource.wdc.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210916214904.734206-1-alistair.francis@opensource.wdc.com> References: <20210916214904.734206-1-alistair.francis@opensource.wdc.com> MIME-Version: 1.0 Received-SPF: pass client-ip=216.71.154.45; envelope-from=prvs=886e160e1=alistair.francis@opensource.wdc.com; helo=esa6.hgst.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Frank Chang Setting Control.claim clears all of the chanel's Next registers. This is effective only when Control.claim is set from 0 to 1. Signed-off-by: Frank Chang Tested-by: Max Hsu Reviewed-by: Bin Meng Tested-by: Bin Meng Message-id: 20210912130553.179501-2-frank.chang@sifive.com Signed-off-by: Alistair Francis --- hw/dma/sifive_pdma.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index 9b2ac2017d..d92e27dfdc 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -54,6 +54,13 @@ #define DMA_EXEC_DST 0x110 #define DMA_EXEC_SRC 0x118 +/* + * FU540/FU740 docs are incorrect with NextConfig.wsize/rsize reset values. + * The reset values tested on Unleashed/Unmatched boards are 6 instead of 0. + */ +#define CONFIG_WRSZ_DEFAULT 6 +#define CONFIG_RDSZ_DEFAULT 6 + enum dma_chan_state { DMA_CHAN_STATE_IDLE, DMA_CHAN_STATE_STARTED, @@ -221,6 +228,7 @@ static void sifive_pdma_write(void *opaque, hwaddr offset, { SiFivePDMAState *s = opaque; int ch = SIFIVE_PDMA_CHAN_NO(offset); + bool claimed; if (ch >= SIFIVE_PDMA_CHANS) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Invalid channel no %d\n", @@ -231,6 +239,17 @@ static void sifive_pdma_write(void *opaque, hwaddr offset, offset &= 0xfff; switch (offset) { case DMA_CONTROL: + claimed = !!s->chan[ch].control & CONTROL_CLAIM; + + if (!claimed && (value & CONTROL_CLAIM)) { + /* reset Next* registers */ + s->chan[ch].next_config = (CONFIG_RDSZ_DEFAULT << CONFIG_RDSZ_SHIFT) | + (CONFIG_WRSZ_DEFAULT << CONFIG_WRSZ_SHIFT); + s->chan[ch].next_bytes = 0; + s->chan[ch].next_dst = 0; + s->chan[ch].next_src = 0; + } + s->chan[ch].control = value; if (value & CONTROL_RUN) {