From nobody Sat May 4 08:31:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=1573725126; cv=none; d=zoho.com; s=zohoarc; b=D22SI+RgDQfZZZ3EtfONbweXHc+2Hcnt1R3vngZsJbzA2o8nhed1QcSxourzSyVoPYzHSiuX+botC/CAWHZlpBJkz/fetoU/rmKnMbI8CVkgta0SS23kvwDCBzNuQaZGTgxyzzOI//JIMaiIAiIb/0DfRn6ZfdnUK9UdACScAoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573725126; h=Content-Type: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=9FUVJSjvatEiT/eS50h/OxSefLk8gFOimniR6V4KFkk=; b=T8mwHdsjxiqRutPini42wBhagnwNMXAW9fRTJL62hHGTFMQgOnRlQfeDdEENDiHGx6ZZKhKxJ6MN5cIzZZVJ3vIzxqiperMjKusba6SSA89Eo9oFDJKH8zMjbEjoS6+oFm883+6BzDgAu8+GYlVopncYKO17mk9FOy5QutwN2cY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 15737251269339.622854593613624; Thu, 14 Nov 2019 01:52:06 -0800 (PST) Received: from localhost ([::1]:54948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBnI-0004Li-Pz for importer@patchew.org; Thu, 14 Nov 2019 04:52:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37223) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBha-0007h3-6u for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVBhZ-0004KN-0v for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:10 -0500 Received: from 20.mo1.mail-out.ovh.net ([188.165.45.168]:38269) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVBhY-0004Iu-Py for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:08 -0500 Received: from player737.ha.ovh.net (unknown [10.109.159.7]) by mo1.mail-out.ovh.net (Postfix) with ESMTP id 8981E1961D4 for ; Thu, 14 Nov 2019 10:46:05 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player737.ha.ovh.net (Postfix) with ESMTPSA id 75B0F2A7832C; Thu, 14 Nov 2019 09:45:58 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: Peter Maydell Subject: [PATCH 1/5] aspeed/smc: Restore default AHB window mapping at reset Date: Thu, 14 Nov 2019 10:45:40 +0100 Message-Id: <20191114094544.30114-2-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191114094544.30114-1-clg@kaod.org> References: <20191114094544.30114-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 2476135371268131601 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeffedgtdelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejfeejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedt Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 188.165.45.168 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: Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org, Joel Stanley , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The current model only restores the Segment Register values but leaves the previous CS mapping behind. Introduce a helper setting the register value and mapping the region at the requested address. Use this helper when a Segment register is set and at reset. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley --- hw/ssi/aspeed_smc.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index f0c7bbbad302..955ec21852ac 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -475,10 +475,26 @@ static bool aspeed_smc_flash_overlap(const AspeedSMCS= tate *s, return false; } =20 +static void aspeed_smc_flash_set_segment_region(AspeedSMCState *s, int cs, + uint64_t regval) +{ + AspeedSMCFlash *fl =3D &s->flashes[cs]; + AspeedSegments seg; + + s->ctrl->reg_to_segment(s, regval, &seg); + + memory_region_transaction_begin(); + memory_region_set_size(&fl->mmio, seg.size); + memory_region_set_address(&fl->mmio, seg.addr - s->ctrl->flash_window_= base); + memory_region_set_enabled(&fl->mmio, true); + memory_region_transaction_commit(); + + s->regs[R_SEG_ADDR0 + cs] =3D regval; +} + static void aspeed_smc_flash_set_segment(AspeedSMCState *s, int cs, uint64_t new) { - AspeedSMCFlash *fl =3D &s->flashes[cs]; AspeedSegments seg; =20 s->ctrl->reg_to_segment(s, new, &seg); @@ -529,13 +545,7 @@ static void aspeed_smc_flash_set_segment(AspeedSMCStat= e *s, int cs, aspeed_smc_flash_overlap(s, &seg, cs); =20 /* All should be fine now to move the region */ - memory_region_transaction_begin(); - memory_region_set_size(&fl->mmio, seg.size); - memory_region_set_address(&fl->mmio, seg.addr - s->ctrl->flash_window_= base); - memory_region_set_enabled(&fl->mmio, true); - memory_region_transaction_commit(); - - s->regs[R_SEG_ADDR0 + cs] =3D new; + aspeed_smc_flash_set_segment_region(s, cs, new); } =20 static uint64_t aspeed_smc_flash_default_read(void *opaque, hwaddr addr, @@ -897,10 +907,10 @@ static void aspeed_smc_reset(DeviceState *d) qemu_set_irq(s->cs_lines[i], true); } =20 - /* setup default segment register values for all */ + /* setup the default segment register values and regions for all */ for (i =3D 0; i < s->ctrl->max_slaves; ++i) { - s->regs[R_SEG_ADDR0 + i] =3D - s->ctrl->segment_to_reg(s, &s->ctrl->segments[i]); + aspeed_smc_flash_set_segment_region(s, i, + s->ctrl->segment_to_reg(s, &s->ctrl->segments[i])); } =20 /* HW strapping flash type for the AST2600 controllers */ --=20 2.21.0 From nobody Sat May 4 08:31:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=1573725257; cv=none; d=zoho.com; s=zohoarc; b=TT31N+xAn61a41hOaJQF1aZqtQSmdveN9Ra/ek4Np3dQPLOoDC0ngluJ1zmPyft1GkfXLyZTcGqIv7GiJKkUGQhMLbjuodjBntzlN+HAtFXA+hR+stIRjAXv918DhvYDOKtvPusOvvXZ93FmqNl28k75yEzUaV/N+j7oHC+4Q6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573725257; h=Content-Type: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=+ty8wry/giU28BptEXJKa0kxQTaGNSuJLoYqArs1qbo=; b=DIQcbekjJaJNlDfpI2O25GnNITLktK9KoLVsM1mYbLN/BgK7w/x9vGQQDH8PRTabAxfG8pu0ovbrYF+VZmmqgKqv/dRMSwaQIRMBf/cf7txbJv9uibZC3lmu9c1bwkzwAiwauj9oulQ84zDnM7cWm1wKXLT2YBhQWNpWUFz+BUk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1573725257966928.5365998017461; Thu, 14 Nov 2019 01:54:17 -0800 (PST) Received: from localhost ([::1]:54966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBpQ-0006Wf-HX for importer@patchew.org; Thu, 14 Nov 2019 04:54:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37255) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBhf-0007iX-5w for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVBhe-0004OY-1T for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:15 -0500 Received: from 9.mo7.mail-out.ovh.net ([46.105.60.248]:49047) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVBhd-0004Ny-Ra for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:13 -0500 Received: from player737.ha.ovh.net (unknown [10.108.42.142]) by mo7.mail-out.ovh.net (Postfix) with ESMTP id 29DAD13E65F for ; Thu, 14 Nov 2019 10:46:12 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player737.ha.ovh.net (Postfix) with ESMTPSA id 680DF2A7842D; Thu, 14 Nov 2019 09:46:05 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: Peter Maydell Subject: [PATCH 2/5] aspeed/smc: Do not map disabled segment on the AST2600 Date: Thu, 14 Nov 2019 10:45:41 +0100 Message-Id: <20191114094544.30114-3-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191114094544.30114-1-clg@kaod.org> References: <20191114094544.30114-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 2478105698616970001 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeffedgtdelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejfeejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedu Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 46.105.60.248 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: Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org, Joel Stanley , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The segments can be disabled on the AST2600 (zero register value). CS0 is open by default but not the other CS. This is closing the access to the flash device in user mode and forbids scanning. In the model, check the segment size and disable the associated region when the value is zero. Fixes: bcaa8ddd081c ("aspeed/smc: Add AST2600 support") Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley --- hw/ssi/aspeed_smc.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 955ec21852ac..86cadbe4cc00 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -444,8 +444,13 @@ static void aspeed_2600_smc_reg_to_segment(const Aspee= dSMCState *s, uint32_t start_offset =3D (reg << 16) & AST2600_SEG_ADDR_MASK; uint32_t end_offset =3D reg & AST2600_SEG_ADDR_MASK; =20 - seg->addr =3D s->ctrl->flash_window_base + start_offset; - seg->size =3D end_offset + MiB - start_offset; + if (reg) { + seg->addr =3D s->ctrl->flash_window_base + start_offset; + seg->size =3D end_offset + MiB - start_offset; + } else { + seg->addr =3D s->ctrl->flash_window_base; + seg->size =3D 0; + } } =20 static bool aspeed_smc_flash_overlap(const AspeedSMCState *s, @@ -486,7 +491,7 @@ static void aspeed_smc_flash_set_segment_region(AspeedS= MCState *s, int cs, memory_region_transaction_begin(); memory_region_set_size(&fl->mmio, seg.size); memory_region_set_address(&fl->mmio, seg.addr - s->ctrl->flash_window_= base); - memory_region_set_enabled(&fl->mmio, true); + memory_region_set_enabled(&fl->mmio, !!seg.size); memory_region_transaction_commit(); =20 s->regs[R_SEG_ADDR0 + cs] =3D regval; @@ -526,8 +531,9 @@ static void aspeed_smc_flash_set_segment(AspeedSMCState= *s, int cs, } =20 /* Keep the segment in the overall flash window */ - if (seg.addr + seg.size <=3D s->ctrl->flash_window_base || - seg.addr > s->ctrl->flash_window_base + s->ctrl->flash_window_size= ) { + if (seg.size && + (seg.addr + seg.size <=3D s->ctrl->flash_window_base || + seg.addr > s->ctrl->flash_window_base + s->ctrl->flash_window_siz= e)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: new segment for CS%d is invali= d : " "[ 0x%"HWADDR_PRIx" - 0x%"HWADDR_PRIx" ]\n", s->ctrl->name, cs, seg.addr, seg.addr + seg.size); --=20 2.21.0 From nobody Sat May 4 08:31:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=1573724990; cv=none; d=zoho.com; s=zohoarc; b=muUeIWrOQO2i+qQVAXYYOh+CH10ADMjD6xARSB+rs7qUqPZt+U94qszET4/gYMfRbqGpxxHHcH1sdxGs07XAlVoMi7HcLy+XPGZTFd6f4JCCuseIGxuDymtixkVIXw2KGB3SXxcZlZKI5EQbM15hb5gmgHkqRgT0LSWLq1a96M0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573724990; h=Content-Type: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=WVZ3/kTsbDtpQd1+jJtUSoUaCivSu8H+hk8gI7ya1L0=; b=gJmWuJgs4gJqsZu6njvnORnHeXN86EWvSRb5xpM6fZSoAn678AygzW30OgkA1zbU67z0fI6MW0JKc42xEv1GdPx6pGjekuwoSWzUWrO6ZpkDQNX1j8VsRY85BTWn/WrA3vE7/+7CvUg5lo9iKgKP55VziHnCIGd0d+Df1XUcZWY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1573724990348440.1035484137252; Thu, 14 Nov 2019 01:49:50 -0800 (PST) Received: from localhost ([::1]:54908 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBl6-0001Ya-Sn for importer@patchew.org; Thu, 14 Nov 2019 04:49:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37340) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBhq-0007lT-Lw for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVBho-0004Tz-9N for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:26 -0500 Received: from 3.mo3.mail-out.ovh.net ([46.105.44.175]:42328) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVBhm-0004RB-7m for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:24 -0500 Received: from player737.ha.ovh.net (unknown [10.108.42.119]) by mo3.mail-out.ovh.net (Postfix) with ESMTP id 45F36231631 for ; Thu, 14 Nov 2019 10:46:19 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player737.ha.ovh.net (Postfix) with ESMTPSA id 211D92A78516; Thu, 14 Nov 2019 09:46:12 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: Peter Maydell Subject: [PATCH 3/5] aspeed/smc: Add AST2600 timings registers Date: Thu, 14 Nov 2019 10:45:42 +0100 Message-Id: <20191114094544.30114-4-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191114094544.30114-1-clg@kaod.org> References: <20191114094544.30114-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 2479794547653380881 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeffedgtdelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejfeejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedt Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 46.105.44.175 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: Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org, Joel Stanley , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Each CS has its own Read Timing Compensation Register on newer SoCs. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley --- include/hw/ssi/aspeed_smc.h | 1 + hw/ssi/aspeed_smc.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h index 684d16e33613..6fbbb238f158 100644 --- a/include/hw/ssi/aspeed_smc.h +++ b/include/hw/ssi/aspeed_smc.h @@ -40,6 +40,7 @@ typedef struct AspeedSMCController { uint8_t r_ce_ctrl; uint8_t r_ctrl0; uint8_t r_timings; + uint8_t nregs_timings; uint8_t conf_enable_w0; uint8_t max_slaves; const AspeedSegments *segments; diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 86cadbe4cc00..7755eca34976 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -137,7 +137,7 @@ /* Checksum Calculation Result */ #define R_DMA_CHECKSUM (0x90 / 4) =20 -/* Misc Control Register #2 */ +/* Read Timing Compensation Register */ #define R_TIMINGS (0x94 / 4) =20 /* SPI controller registers and bits (AST2400) */ @@ -256,6 +256,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 5, .segments =3D aspeed_segments_legacy, @@ -271,6 +272,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 5, .segments =3D aspeed_segments_fmc, @@ -288,6 +290,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D 0xff, .r_ctrl0 =3D R_SPI_CTRL0, .r_timings =3D R_SPI_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D SPI_CONF_ENABLE_W0, .max_slaves =3D 1, .segments =3D aspeed_segments_spi, @@ -303,6 +306,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 3, .segments =3D aspeed_segments_ast2500_fmc, @@ -320,6 +324,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 2, .segments =3D aspeed_segments_ast2500_spi1, @@ -335,6 +340,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 2, .segments =3D aspeed_segments_ast2500_spi2, @@ -350,6 +356,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 1, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 3, .segments =3D aspeed_segments_ast2600_fmc, @@ -365,6 +372,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 2, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 2, .segments =3D aspeed_segments_ast2600_spi1, @@ -380,6 +388,7 @@ static const AspeedSMCController controllers[] =3D { .r_ce_ctrl =3D R_CE_CTRL, .r_ctrl0 =3D R_CTRL0, .r_timings =3D R_TIMINGS, + .nregs_timings =3D 3, .conf_enable_w0 =3D CONF_ENABLE_W0, .max_slaves =3D 3, .segments =3D aspeed_segments_ast2600_spi2, @@ -951,7 +960,8 @@ static uint64_t aspeed_smc_read(void *opaque, hwaddr ad= dr, unsigned int size) addr >>=3D 2; =20 if (addr =3D=3D s->r_conf || - addr =3D=3D s->r_timings || + (addr >=3D s->r_timings && + addr < s->r_timings + s->ctrl->nregs_timings) || addr =3D=3D s->r_ce_ctrl || addr =3D=3D R_INTR_CTRL || addr =3D=3D R_DUMMY_DATA || @@ -1216,7 +1226,8 @@ static void aspeed_smc_write(void *opaque, hwaddr add= r, uint64_t data, addr >>=3D 2; =20 if (addr =3D=3D s->r_conf || - addr =3D=3D s->r_timings || + (addr >=3D s->r_timings && + addr < s->r_timings + s->ctrl->nregs_timings) || addr =3D=3D s->r_ce_ctrl) { s->regs[addr] =3D value; } else if (addr >=3D s->r_ctrl0 && addr < s->r_ctrl0 + s->num_cs) { --=20 2.21.0 From nobody Sat May 4 08:31:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=1573725445; cv=none; d=zoho.com; s=zohoarc; b=EggnkUmK9zIF1nH4+kdaDS2I5bOsq3ncjft5vbSM/Rfwm+fVTHuMps3vyfrNJy2N2QjKI82O6myfJklSpp8jA8X27qchpJ4tuE/QXI5IWxSWMle417i5zfFtI0ozQ90D/qREK7MtOfXFnM6/l9g3wKQChY3eQ4ePtklBJpYaPgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573725445; h=Content-Type: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=vBbDtvVTz5i7m5qN0JMKePrBb4hGDwLwh1Kdy2HCpms=; b=KajJUGFQW6MI9vxFc6IG2kuytstRKhPSAMKQhICsg5P/n3w7UqzsgZLpHbeVcxK7dx98Hmi82XEdyAyleloEVAs+6T8QiYmWpOmVC1YUS794X8Pn1xgpI7tLXxhypn254t3wL9OsgnWrEKf/4G/feCPlYbm13R7A6y9flqBCp5U= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 1573725445817756.4789494684054; Thu, 14 Nov 2019 01:57:25 -0800 (PST) Received: from localhost ([::1]:55000 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBsO-0001vl-JE for importer@patchew.org; Thu, 14 Nov 2019 04:57:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37391) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBhw-0007px-UX for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVBhu-0004ZW-TG for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:32 -0500 Received: from 15.mo7.mail-out.ovh.net ([87.98.180.21]:38563) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVBhs-0004Ua-SU for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:29 -0500 Received: from player737.ha.ovh.net (unknown [10.109.159.224]) by mo7.mail-out.ovh.net (Postfix) with ESMTP id DA11F13E660 for ; Thu, 14 Nov 2019 10:46:25 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player737.ha.ovh.net (Postfix) with ESMTPSA id 08BA02A78619; Thu, 14 Nov 2019 09:46:19 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: Peter Maydell Subject: [PATCH 4/5] aspeed: Remove AspeedBoardConfig array and use AspeedMachineClass Date: Thu, 14 Nov 2019 10:45:43 +0100 Message-Id: <20191114094544.30114-5-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191114094544.30114-1-clg@kaod.org> References: <20191114094544.30114-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 2481764873567701777 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeffedgtdelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejfeejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpeef Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 87.98.180.21 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: Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org, Joel Stanley , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" AspeedBoardConfig is a redundant way to define class attributes and it complexifies the machine definition and initialization. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley --- include/hw/arm/aspeed.h | 24 ++--- hw/arm/aspeed.c | 231 ++++++++++++++++++++++------------------ 2 files changed, 137 insertions(+), 118 deletions(-) diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index f49bc7081e4d..4423cd0cda71 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -13,19 +13,6 @@ =20 typedef struct AspeedBoardState AspeedBoardState; =20 -typedef struct AspeedBoardConfig { - const char *name; - const char *desc; - const char *soc_name; - uint32_t hw_strap1; - uint32_t hw_strap2; - const char *fmc_model; - const char *spi_model; - uint32_t num_cs; - void (*i2c_init)(AspeedBoardState *bmc); - uint32_t ram; -} AspeedBoardConfig; - #define TYPE_ASPEED_MACHINE MACHINE_TYPE_NAME("aspeed") #define ASPEED_MACHINE(obj) \ OBJECT_CHECK(AspeedMachine, (obj), TYPE_ASPEED_MACHINE) @@ -41,7 +28,16 @@ typedef struct AspeedMachine { =20 typedef struct AspeedMachineClass { MachineClass parent_obj; - const AspeedBoardConfig *board; + + const char *name; + const char *desc; + const char *soc_name; + uint32_t hw_strap1; + uint32_t hw_strap2; + const char *fmc_model; + const char *spi_model; + uint32_t num_cs; + void (*i2c_init)(AspeedBoardState *bmc); } AspeedMachineClass; =20 =20 diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 028191ff36fc..e34e6787430b 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -167,10 +167,10 @@ static void aspeed_board_init_flashes(AspeedSMCState = *s, const char *flashtype, } } =20 -static void aspeed_board_init(MachineState *machine, - const AspeedBoardConfig *cfg) +static void aspeed_machine_init(MachineState *machine) { AspeedBoardState *bmc; + AspeedMachineClass *amc =3D ASPEED_MACHINE_GET_CLASS(machine); AspeedSoCClass *sc; DriveInfo *drive0 =3D drive_get(IF_MTD, 0, 0); ram_addr_t max_ram_size; @@ -182,18 +182,18 @@ static void aspeed_board_init(MachineState *machine, UINT32_MAX); =20 object_initialize_child(OBJECT(machine), "soc", &bmc->soc, - (sizeof(bmc->soc)), cfg->soc_name, &error_abor= t, + (sizeof(bmc->soc)), amc->soc_name, &error_abor= t, NULL); =20 sc =3D ASPEED_SOC_GET_CLASS(&bmc->soc); =20 object_property_set_uint(OBJECT(&bmc->soc), ram_size, "ram-size", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap1, "hw-strap1", + object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap1, "hw-strap1", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap2, "hw-strap2", + object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap2, "hw-strap2", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->num_cs, "num-cs", + object_property_set_int(OBJECT(&bmc->soc), amc->num_cs, "num-cs", &error_abort); object_property_set_int(OBJECT(&bmc->soc), machine->smp.cpus, "num-cpu= s", &error_abort); @@ -230,8 +230,8 @@ static void aspeed_board_init(MachineState *machine, "max_ram", max_ram_size - ram_size); memory_region_add_subregion(&bmc->ram_container, ram_size, &bmc->max_r= am); =20 - aspeed_board_init_flashes(&bmc->soc.fmc, cfg->fmc_model, &error_abort); - aspeed_board_init_flashes(&bmc->soc.spi[0], cfg->spi_model, &error_abo= rt); + aspeed_board_init_flashes(&bmc->soc.fmc, amc->fmc_model, &error_abort); + aspeed_board_init_flashes(&bmc->soc.spi[0], amc->spi_model, &error_abo= rt); =20 /* Install first FMC flash content as a boot rom. */ if (drive0) { @@ -255,8 +255,8 @@ static void aspeed_board_init(MachineState *machine, aspeed_board_binfo.loader_start =3D sc->memmap[ASPEED_SDRAM]; aspeed_board_binfo.nb_cpus =3D bmc->soc.num_cpus; =20 - if (cfg->i2c_init) { - cfg->i2c_init(bmc); + if (amc->i2c_init) { + amc->i2c_init(bmc); } =20 for (i =3D 0; i < ARRAY_SIZE(bmc->soc.sdhci.slots); i++) { @@ -383,118 +383,141 @@ static void witherspoon_bmc_i2c_init(AspeedBoardSta= te *bmc) 0x60); } =20 -static void aspeed_machine_init(MachineState *machine) -{ - AspeedMachineClass *amc =3D ASPEED_MACHINE_GET_CLASS(machine); - - aspeed_board_init(machine, amc->board); -} - static void aspeed_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); - AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); - const AspeedBoardConfig *board =3D data; =20 - mc->desc =3D board->desc; mc->init =3D aspeed_machine_init; mc->max_cpus =3D ASPEED_CPUS_NUM; mc->no_floppy =3D 1; mc->no_cdrom =3D 1; mc->no_parallel =3D 1; - if (board->ram) { - mc->default_ram_size =3D board->ram; - } - amc->board =3D board; } =20 -static const TypeInfo aspeed_machine_type =3D { - .name =3D TYPE_ASPEED_MACHINE, - .parent =3D TYPE_MACHINE, - .instance_size =3D sizeof(AspeedMachine), - .class_size =3D sizeof(AspeedMachineClass), - .abstract =3D true, +static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Palmetto BMC (ARM926EJ-S)"; + amc->soc_name =3D "ast2400-a1"; + amc->hw_strap1 =3D PALMETTO_BMC_HW_STRAP1; + amc->fmc_model =3D "n25q256a"; + amc->spi_model =3D "mx25l25635e"; + amc->num_cs =3D 1; + amc->i2c_init =3D palmetto_bmc_i2c_init; + mc->default_ram_size =3D 256 * MiB; +}; + +static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "Aspeed AST2500 EVB (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D AST2500_EVB_HW_STRAP1; + amc->fmc_model =3D "w25q256"; + amc->spi_model =3D "mx25l25635e"; + amc->num_cs =3D 1; + amc->i2c_init =3D ast2500_evb_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Romulus BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D ROMULUS_BMC_HW_STRAP1; + amc->fmc_model =3D "n25q256a"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D romulus_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; }; =20 -static const AspeedBoardConfig aspeed_boards[] =3D { +static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Swift BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D SWIFT_BMC_HW_STRAP1; + amc->fmc_model =3D "mx66l1g45g"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D swift_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Witherspoon BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D WITHERSPOON_BMC_HW_STRAP1; + amc->fmc_model =3D "mx25l25635e"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D witherspoon_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "Aspeed AST2600 EVB (Cortex A7)"; + amc->soc_name =3D "ast2600-a0"; + amc->hw_strap1 =3D AST2600_EVB_HW_STRAP1; + amc->hw_strap2 =3D AST2600_EVB_HW_STRAP2; + amc->fmc_model =3D "w25q512jv"; + amc->spi_model =3D "mx66u51235f"; + amc->num_cs =3D 1; + amc->i2c_init =3D ast2600_evb_i2c_init; + mc->default_ram_size =3D 1 * GiB; +}; + +static const TypeInfo aspeed_machine_types[] =3D { { - .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), - .desc =3D "OpenPOWER Palmetto BMC (ARM926EJ-S)", - .soc_name =3D "ast2400-a1", - .hw_strap1 =3D PALMETTO_BMC_HW_STRAP1, - .fmc_model =3D "n25q256a", - .spi_model =3D "mx25l25635e", - .num_cs =3D 1, - .i2c_init =3D palmetto_bmc_i2c_init, - .ram =3D 256 * MiB, + .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_palmetto_class_init, }, { - .name =3D MACHINE_TYPE_NAME("ast2500-evb"), - .desc =3D "Aspeed AST2500 EVB (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D AST2500_EVB_HW_STRAP1, - .fmc_model =3D "w25q256", - .spi_model =3D "mx25l25635e", - .num_cs =3D 1, - .i2c_init =3D ast2500_evb_i2c_init, - .ram =3D 512 * MiB, + .name =3D MACHINE_TYPE_NAME("ast2500-evb"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_ast2500_evb_class_init, }, { - .name =3D MACHINE_TYPE_NAME("romulus-bmc"), - .desc =3D "OpenPOWER Romulus BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D ROMULUS_BMC_HW_STRAP1, - .fmc_model =3D "n25q256a", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D romulus_bmc_i2c_init, - .ram =3D 512 * MiB, + .name =3D MACHINE_TYPE_NAME("romulus-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_romulus_class_init, }, { - .name =3D MACHINE_TYPE_NAME("swift-bmc"), - .desc =3D "OpenPOWER Swift BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D SWIFT_BMC_HW_STRAP1, - .fmc_model =3D "mx66l1g45g", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D swift_bmc_i2c_init, - .ram =3D 512 * MiB, + .name =3D MACHINE_TYPE_NAME("swift-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_swift_class_init, }, { - .name =3D MACHINE_TYPE_NAME("witherspoon-bmc"), - .desc =3D "OpenPOWER Witherspoon BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D WITHERSPOON_BMC_HW_STRAP1, - .fmc_model =3D "mx25l25635e", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D witherspoon_bmc_i2c_init, - .ram =3D 512 * MiB, + .name =3D MACHINE_TYPE_NAME("witherspoon-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_witherspoon_class_init, }, { - .name =3D MACHINE_TYPE_NAME("ast2600-evb"), - .desc =3D "Aspeed AST2600 EVB (Cortex A7)", - .soc_name =3D "ast2600-a0", - .hw_strap1 =3D AST2600_EVB_HW_STRAP1, - .hw_strap2 =3D AST2600_EVB_HW_STRAP2, - .fmc_model =3D "w25q512jv", - .spi_model =3D "mx66u51235f", - .num_cs =3D 1, - .i2c_init =3D ast2600_evb_i2c_init, - .ram =3D 1 * GiB, - }, -}; - -static void aspeed_machine_types(void) -{ - int i; - - type_register_static(&aspeed_machine_type); - for (i =3D 0; i < ARRAY_SIZE(aspeed_boards); ++i) { - TypeInfo ti =3D { - .name =3D aspeed_boards[i].name, - .parent =3D TYPE_ASPEED_MACHINE, - .class_init =3D aspeed_machine_class_init, - .class_data =3D (void *)&aspeed_boards[i], - }; - type_register(&ti); + .name =3D MACHINE_TYPE_NAME("ast2600-evb"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_ast2600_evb_class_init, + }, { + .name =3D TYPE_ASPEED_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(AspeedMachine), + .class_size =3D sizeof(AspeedMachineClass), + .class_init =3D aspeed_machine_class_init, + .abstract =3D true, } -} +}; =20 -type_init(aspeed_machine_types) +DEFINE_TYPES(aspeed_machine_types) --=20 2.21.0 From nobody Sat May 4 08:31:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.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=1573725119; cv=none; d=zoho.com; s=zohoarc; b=N4E/0JoQrcT3hulnvGqvky/uPBBSUzWzKn7mMRIhJGEFC95EQ1g7zhbgVnCZtW0twolADH+baBQ0Bd9jW7tu9I/5ds9DY2OwZNb7jeK3vfFu8o65ihoE0xZB0Wcw8ZGAMCJjHk1aaUUE8msWpEWVel/oGUddvoCo6zrynu5jSqI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1573725119; h=Content-Type: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=3SIx8kAu24GIEbXSolS7xH/o783ZAi9NIXax7UtIqUQ=; b=etzNyujykDNtqiN6nfzW66xbvSgV3cTohQImXKTT7Q3K9lfrv9chLtkaSLo4n/8ATsW79doqKxibN+dioQA+ohYNDobx2gP6lAnrMsnNIdE0QPq0rFtFhZh8MdCaUhZl9+sDitp1bi8ro52B1rKwb8T9G69Z2XIOmByiDcaLIaQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.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 157372511920766.89818456809599; Thu, 14 Nov 2019 01:51:59 -0800 (PST) Received: from localhost ([::1]:54944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBn9-00040h-9Z for importer@patchew.org; Thu, 14 Nov 2019 04:51:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37445) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iVBi0-0007vO-II for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iVBhz-0004cM-7C for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:36 -0500 Received: from 5.mo6.mail-out.ovh.net ([46.105.54.31]:53704) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iVBhz-0004bh-1R for qemu-devel@nongnu.org; Thu, 14 Nov 2019 04:46:35 -0500 Received: from player737.ha.ovh.net (unknown [10.108.57.16]) by mo6.mail-out.ovh.net (Postfix) with ESMTP id 5717C1EC539 for ; Thu, 14 Nov 2019 10:46:33 +0100 (CET) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player737.ha.ovh.net (Postfix) with ESMTPSA id DDAA32A786B0; Thu, 14 Nov 2019 09:46:25 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: Peter Maydell Subject: [PATCH 5/5] aspeed: Add support for the tacoma-bmc board Date: Thu, 14 Nov 2019 10:45:44 +0100 Message-Id: <20191114094544.30114-6-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191114094544.30114-1-clg@kaod.org> References: <20191114094544.30114-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 2483735194706610961 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrudeffedgtdelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpledtrdejiedrhedtrddvvdefnecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejfeejrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedu Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 46.105.54.31 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: Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org, Joel Stanley , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The Tacoma BMC board is replacement board for the BMC of the OpenPOWER Witherspoon system. It uses a AST2600 SoC instead of a AST2500 and is used for HW bringup. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley --- hw/arm/aspeed.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index e34e6787430b..729f2e79cd79 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -92,6 +92,10 @@ struct AspeedBoardState { #define AST2600_EVB_HW_STRAP1 0x000000C0 #define AST2600_EVB_HW_STRAP2 0x00000003 =20 +/* Tacoma hardware value */ +#define TACOMA_BMC_HW_STRAP1 0x00000000 +#define TACOMA_BMC_HW_STRAP2 0x00000000 + /* * The max ram region is for firmwares that scan the address space * with load/store to guess how much RAM the SoC has. @@ -167,6 +171,34 @@ static void aspeed_board_init_flashes(AspeedSMCState *= s, const char *flashtype, } } =20 +static void tacoma_bmc_i2c_init(AspeedBoardState *bmc) +{ + AspeedSoCState *soc =3D &bmc->soc; + uint8_t *eeprom_buf =3D g_malloc0(8 * 1024); + + /* Bus 3: TODO bmp280@77 */ + /* Bus 3: TODO max31785@52 */ + /* Bus 3: TODO dps310@76 */ + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 3), "pca9552", = 0x60); + + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 4), "tmp423", 0= x4c); + + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 5), "tmp423", 0= x4c); + + /* The tacoma expects a TMP275 but a TMP105 is compatible */ + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 9), TYPE_TMP105, + 0x4a); + + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11), "pca9552", + 0x60); + /* The tacoma expects Epson RX8900 RTC but a ds1338 is compatible */ + i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11), "ds1338", + 0x32); + smbus_eeprom_init_one(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 11), 0x51, + eeprom_buf); + /* Bus 11: TODO ucd90160@64 */ +} + static void aspeed_machine_init(MachineState *machine) { AspeedBoardState *bmc; @@ -485,6 +517,22 @@ static void aspeed_machine_ast2600_evb_class_init(Obje= ctClass *oc, void *data) mc->default_ram_size =3D 1 * GiB; }; =20 +static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "Aspeed AST2600 EVB (Cortex A7)"; + amc->soc_name =3D "ast2600-a0"; + amc->hw_strap1 =3D TACOMA_BMC_HW_STRAP1; + amc->hw_strap2 =3D TACOMA_BMC_HW_STRAP2; + amc->fmc_model =3D "mx66l1g45g"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D tacoma_bmc_i2c_init; + mc->default_ram_size =3D 1 * GiB; +}; + static const TypeInfo aspeed_machine_types[] =3D { { .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), @@ -510,6 +558,10 @@ static const TypeInfo aspeed_machine_types[] =3D { .name =3D MACHINE_TYPE_NAME("ast2600-evb"), .parent =3D TYPE_ASPEED_MACHINE, .class_init =3D aspeed_machine_ast2600_evb_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("tacoma-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_tacoma_class_init, }, { .name =3D TYPE_ASPEED_MACHINE, .parent =3D TYPE_MACHINE, --=20 2.21.0