From nobody Fri Nov 14 20:45:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1762857105; cv=none; d=zohomail.com; s=zohoarc; b=WQy4zaR3Zx2asK+IISJ65zDzrQur/YsDwV2431mnKBDLwMZxW51gjayj5ByYpB8yPp3r9HuU9Rm3zpcXOVO4TgtGoh70WSZKtPr9PZF4rGaeHfkqI0pwYuqdF4LqL38ME+i5VUBE92S8D7/0BjlS8wtshVa+iJbzJq9XLKxtO6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762857105; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ma7NM/EMUNjVg7q3k/Bpes+XFemvPD5AxIlXcPcgP2Y=; b=MIl44lFpYRUBuLBtpZFIdin0dHLR5sjiYCSzoZg7fz2RMyMdKqzltckDEkbm4/yzv2U3D+jV2tBOzuSrxv+z8DReigsGIdtgsmfsWzGo6L8GfMGFc6S3ScDfSBY70Apq589YnfA9zli/REi6SrL11w0pQ4dYCjjlUq/6+xCXf2c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1762857105909963.7385486499587; Tue, 11 Nov 2025 02:31:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vIlck-0008SF-EB; Tue, 11 Nov 2025 05:29:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vIlcN-0007h4-0g for qemu-devel@nongnu.org; Tue, 11 Nov 2025 05:28:55 -0500 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vIlcH-0000I6-Av for qemu-devel@nongnu.org; Tue, 11 Nov 2025 05:28:54 -0500 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b72dad1b713so498793166b.2 for ; Tue, 11 Nov 2025 02:28:48 -0800 (PST) Received: from PC-DA2D10.beckhoff.com ([2001:9e8:dc12:ce00:ae91:a1ff:fe8b:15a7]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b72bdbd1ecfsm1290619366b.10.2025.11.11.02.28.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 02:28:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762856927; x=1763461727; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ma7NM/EMUNjVg7q3k/Bpes+XFemvPD5AxIlXcPcgP2Y=; b=BMQlS3eGrjT4eJv8QTgjgm4N8uoSAoZ4TgP0qfAbv/VnVlCsRJ70mdM+Jt54h+vWWu DxmH1NxnM7pl5T00NMd4bwi1Y58s30WedoPU+yh1liAmQHPi7IaiQrbcwSOby2+dI57g wyTR/CCirc0FGRfbH8BEzNTh5ingMU+3Aj174eyVeX04wAPHgzj7I3oPRqh3R3iDbf5q 1sEeA2fXN9SxVuOj2CDo+gk7aAIXeWYGdm+MeIEG1f9Zh25V/kF36rZhhhcvQm+C9Edj fViBYrcdA6nGji9Qb858XLAR8/teDdfxeJqBmYvYSpATHmK9MUrOg8unensn1hUFN7t+ oD0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762856927; x=1763461727; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ma7NM/EMUNjVg7q3k/Bpes+XFemvPD5AxIlXcPcgP2Y=; b=jPYX2IurnrsDJRk02jgfejUhVHYu1pqQ+qRVew4M/7k+Mk0iKLvAcwVaX3ca1b1x6T ZwHkMYDbuepRjqEgRk9Df6V1WXYg7OuWjsgEwEI0nSepQ3FDrSzvdZJz6SbAO5yZJ0VX U/veT8w3F4CSJdqJl5ZR+t8OoOXw8UEK3rapgp5jCpbOzk4gI5Nx9XUacb+OcbXh2Zz5 ilh5GHXcqWWzCXETSBI6mlFvwH+jHc7QBsQa9Y5PNKowYnLLeRbcdg7MKF60UbQrDesu oXjThcjPSfWxjJvWd6M4s/HqFVwVN3RETRlkWutNrEY2v/eUWwsKzjaYmaoJmsIuwM3v JDcw== X-Gm-Message-State: AOJu0YxBv0FndspqAxar0Q9X3G96xO6GRxvBtDT8utBSdnKY829wGMD7 e6Ql1Ct/fZweWpaBQ81Cd0ZsF5KPJJ/itk2Ls85WdK99VjcWMVVJF2RFn8ECisaF X-Gm-Gg: ASbGncunj9pcpwu9pxIgKjCie+rofbBbRRcsuciMBtke+53UlYyhd7YyLUAFLFGgPsy O6ft9Q34UVcZut0oadhpJceEcFfGrgZeo+qBRLogHphHEYaub/vKhzDLI9U4elWwx4PFp5a6ZW6 neqOntITZ2Ni8bw0beg5PX/qs5HgsXXHHbd9oDevmUfPa06cVmG+AgFq3PciRd6sY4+7CA4Otdd uwsIxe9egWEYFhFZAvVgMqV1YzhGBySfrBgPnjEqYvQWpqgXltXxLxbvY4Er00WTtBg8awlN6Yo a66Gf/9dA8f7RtezKvU8otwQ5bwb/RS8muPwysw5pjHDDUOf5/R/5OIE7tR7myPVfPmTl9QLQFT Z6qUe3DJZskUGyEWHcIvE4CRg6H4TEdwJ8SHlOjtFjnU5Q0W36sOB58wUY/Mw+Wq9ZK1/1Hre7z QPPj2AbifpJn95p9onAJ8IiQ== X-Google-Smtp-Source: AGHT+IG+7Go24+fJW3LJ9vVG3Gt+USa9fd+svrObP8SRVTu5gTVO0hL+MPzdSiNQmX0vn46emjNaow== X-Received: by 2002:a17:906:d554:b0:b3d:73e1:d809 with SMTP id a640c23a62f3a-b72e05e7b30mr1405730066b.48.1762856927038; Tue, 11 Nov 2025 02:28:47 -0800 (PST) From: =?UTF-8?q?Corvin=20K=C3=B6hne?= To: qemu-devel@nongnu.org Cc: Peter Maydell , =?UTF-8?q?Yannick=20Vo=C3=9Fen?= , qemu-block@nongnu.org, Paolo Bonzini , Hanna Reitz , Alistair Francis , qemu-arm@nongnu.org, =?UTF-8?q?Corvin=20K=C3=B6hne?= , Kevin Wolf , "Edgar E. Iglesias" , YannickV , "Edgar E. Iglesias" Subject: [PATCH v4 10/15] hw/misc/zynq_slcr: Add logic for DCI configuration Date: Tue, 11 Nov 2025 11:28:31 +0100 Message-ID: <20251111102836.212535-11-corvin.koehne@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111102836.212535-1-corvin.koehne@gmail.com> References: <20251111102836.212535-1-corvin.koehne@gmail.com> 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: pass client-ip=2a00:1450:4864:20::62c; envelope-from=corvin.koehne@gmail.com; helo=mail-ej1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1762857108519153000 Content-Type: text/plain; charset="utf-8" From: YannickV The registers for the digitally controlled impedance (DCI) clock are part of the system level control registers (SLCR). The DONE bit in the status register indicates a successfull DCI calibration. An description of the calibration process can be found here: https://docs.amd.com/r/en-US/ug585-zynq-7000-SoC-TRM/DDR-IOB-Impedance-Cali= bration The DCI control register and status register have been added. As soon as the ENABLE and RESET bit are set, the RESET bit has also been toggled to 0 before and the UPDATE_CONTROL is not set, the DONE bit in the status register is set. If these bits change the DONE bit is reset. Note that the option bits are not taken into consideration. Signed-off-by: YannickV Reviewed-by: Edgar E. Iglesias --- hw/misc/zynq_slcr.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index a766bab182..d7a2994f47 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -180,6 +180,12 @@ REG32(GPIOB_CFG_HSTL, 0xb14) REG32(GPIOB_DRVR_BIAS_CTRL, 0xb18) =20 REG32(DDRIOB, 0xb40) +REG32(DDRIOB_DCI_CTRL, 0xb70) + FIELD(DDRIOB_DCI_CTRL, RESET, 0, 1) + FIELD(DDRIOB_DCI_CTRL, ENABLE, 1, 1) + FIELD(DDRIOB_DCI_CTRL, UPDATE_CONTROL, 20, 1) +REG32(DDRIOB_DCI_STATUS, 0xb74) + FIELD(DDRIOB_DCI_STATUS, DONE, 13, 1) #define DDRIOB_LENGTH 14 =20 #define ZYNQ_SLCR_MMIO_SIZE 0x1000 @@ -193,6 +199,8 @@ struct ZynqSLCRState { =20 MemoryRegion iomem; =20 + bool ddriob_dci_ctrl_reset_toggled; + uint32_t regs[ZYNQ_SLCR_NUM_REGS]; =20 Clock *ps_clk; @@ -331,6 +339,8 @@ static void zynq_slcr_reset_init(Object *obj, ResetType= type) =20 DB_PRINT("RESET\n"); =20 + s->ddriob_dci_ctrl_reset_toggled =3D false; + s->regs[R_LOCKSTA] =3D 1; /* 0x100 - 0x11C */ s->regs[R_ARM_PLL_CTRL] =3D 0x0001A008; @@ -418,6 +428,8 @@ static void zynq_slcr_reset_init(Object *obj, ResetType= type) s->regs[R_DDRIOB + 4] =3D s->regs[R_DDRIOB + 5] =3D s->regs[R_DDRIOB += 6] =3D 0x00000e00; s->regs[R_DDRIOB + 12] =3D 0x00000021; + + s->regs[R_DDRIOB_DCI_CTRL] =3D 0x00000020; } =20 static void zynq_slcr_reset_hold(Object *obj, ResetType type) @@ -554,6 +566,25 @@ static void zynq_slcr_write(void *opaque, hwaddr offse= t, (int)offset, (unsigned)val & 0xFFFF); } return; + + case R_DDRIOB_DCI_CTRL: + if (!FIELD_EX32(val, DDRIOB_DCI_CTRL, RESET) && + FIELD_EX32(s->regs[R_DDRIOB_DCI_CTRL], DDRIOB_DCI_CTRL, RESET)= ) { + + s->ddriob_dci_ctrl_reset_toggled =3D true; + DB_PRINT("DDRIOB DCI CTRL RESET was toggled\n"); + } + + if (FIELD_EX32(val, DDRIOB_DCI_CTRL, ENABLE) && + FIELD_EX32(val, DDRIOB_DCI_CTRL, RESET) && + !FIELD_EX32(val, DDRIOB_DCI_CTRL, UPDATE_CONTROL) && + s->ddriob_dci_ctrl_reset_toggled) { + + s->regs[R_DDRIOB_DCI_STATUS] |=3D R_DDRIOB_DCI_STATUS_DONE_MAS= K; + } else { + s->regs[R_DDRIOB_DCI_STATUS] &=3D ~R_DDRIOB_DCI_STATUS_DONE_MA= SK; + } + break; } =20 if (s->regs[R_LOCKSTA]) { --=20 2.47.3