From nobody Fri Aug 28 00:12:39 2026 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; arc=pass (i=1 dmarc=pass fromdomain=aspeedtech.com); dmarc=pass(p=quarantine dis=none) header.from=aspeedtech.com ARC-Seal: i=2; a=rsa-sha256; t=1786611784; cv=pass; d=zohomail.com; s=zohoarc; b=THGq16ikSjBtPRXCg4SuQQZZ/YmA04hOxUnZVpZKWoAgJ/jzpHQ4lZX3aqzyfXRMU0IRJSeVLcFCAiW5W5Jlka1X2xuglU6HOcLpnQ5ILiwkS/4HCFK0ckjkl8u/ha8eY5bpDYsfpULNM7Fr/ct6Rvu1OY8l3RV6fL8B8bHc6qk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786611784; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9WWkyfSmh9p4QIstj2PDyr/aKoHWjYLbS6YLLUBGsYA=; b=VjfsK5yGkRdGT8x05OFf0f5ZYjowEmjWB+72N8vvykwRBPuH4Hd6cWChXKJOWifC7Yb8uKFmFmLBKVNfBzRi5T//5cD1Fl3g0YcYlxDFXzmTvegJe8+dbCauzMV4NaGFf4Ujm14uRr2iGJmUMG8aNAS4DcK70fIpjbijTk3whRA= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=aspeedtech.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786611783679978.3506804874149; Thu, 13 Aug 2026 02:03:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wuRKP-0007xW-GT; Thu, 13 Aug 2026 05:02:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wuRKM-0007x1-BO; Thu, 13 Aug 2026 05:02:18 -0400 Received: from mail-koreacentralazlp170130006.outbound.protection.outlook.com ([2a01:111:f403:c40f::6] helo=SEYPR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wuRKJ-0006QQ-LE; Thu, 13 Aug 2026 05:02:17 -0400 Received: from TYZPR06MB4980.apcprd06.prod.outlook.com (2603:1096:400:1cc::10) by TY8PR06MB9077.apcprd06.prod.outlook.com (2603:1096:405:3b0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.12; Thu, 13 Aug 2026 09:02:06 +0000 Received: from TYZPR06MB4980.apcprd06.prod.outlook.com ([fe80::ea8a:7cb7:4822:2fb3]) by TYZPR06MB4980.apcprd06.prod.outlook.com ([fe80::ea8a:7cb7:4822:2fb3%6]) with mapi id 15.21.0315.012; Thu, 13 Aug 2026 09:02:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qXz/K5OrN9/5a9pInCaRKhX69/foeogHv0Ld5k2E2EfSpfooWQxX/kYFj7DJUp6jb5sZ8sq40HSxxEj3Ls4zlZd47OdKahS0KClA10yfZAcKpmjcEy0DOzHOnoRUnFy3JOy6DGVDCb8+BNO3Xg2hFCaipruMArYq8LbFD5qw/tN483pp08inHpyaiMX7D4P5nfM1zM/KQXApLy6KZRPG2klYnNfL7Ig6E7xfHstKV/zCOhxOTtZjBfUk8hAudobpXGQst5zgRA70Uuy4ZaC1RdNCh6KbGcl/0Rf9eR7qUuCf05AynHE5PHKnuVm37UYCBYDt1BBKOFxTdMXJfBoe/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9WWkyfSmh9p4QIstj2PDyr/aKoHWjYLbS6YLLUBGsYA=; b=OPoEB4j+Y5MtO1wIrKd7OWccoAac6p758ieF+NQzGuNb9/ZVXnKrBVrajTyatqwuTltg6AMc/7P5vgTDDhZ0grwe/Yz5GRthdswzdQm6S6/a/I1BDuEN8+KWN9dlrIXm2PsYXSCaKpW9ZdJHl2Dlx7cMwdaBAQ+L26W6Mqg/cnpX02hFFAffwhZ6jAVYU6Stxlbytq80dmDzc0rsah4YwOJmXIl0sGYHsQ23Pqdc3a7ZM7ABW7AIEg9JSTqFOrzjBi8OeHAWeVsum4feRLprW/kM/+sJaLIHLvCAi5IZEREqrrEC/TH1ayz++XFWFpwkjBwVcfOFwikaSrcgZuFEiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9WWkyfSmh9p4QIstj2PDyr/aKoHWjYLbS6YLLUBGsYA=; b=aFYoZmqJsGLiG66vUPxYa78Upp8i2HeEKlMggUoMBNQpiwBTr/QdRgNWGXPebwgqRCb1S4OpaClP3eT+BY2KyZN6ZMVJjk3nzlBn6MC0FPKBcAoWIAWNSeq756RSM/nbWRvTu4FqVGoo8UnJZRCflR9rH3Vqk6pHlw1QUuYYE0iy6NAj9ganY0khWAhGxd/WJNJj2F+PXyqU4+Yy66Q/JMFP7+1lQUfnLJ8G/AwFNkyIVRV8ngohxFnESUcPsGw9NRTMH+6HeRSleyEL94G3XqzbBAnThscAmKN3hrWYyltIa4/EJImVWdTolitOmmE5BjYs8PR79trDvR+EvHjwUQ== From: Jamin Lin To: =?iso-8859-1?Q?C=E9dric_Le_Goater?= , Peter Maydell , Steven Lee , Troy Lee , Kane Chen , Andrew Jeffery , Joel Stanley , "open list:ASPEED BMCs" , "open list:All patches CC here" CC: Jamin Lin , Troy Lee , "Mikail.Sadic@ibm.com" Subject: [PATCH v1] hw/i2c/aspeed_i2c: Latch first received byte for SMBus block reads Thread-Topic: [PATCH v1] hw/i2c/aspeed_i2c: Latch first received byte for SMBus block reads Thread-Index: AQHdKwJqkWkcyoBADkCDJjjo6H+EgQ== Date: Thu, 13 Aug 2026 09:02:06 +0000 Message-ID: <20260813090205.853307-1-jamin_lin@aspeedtech.com> Accept-Language: zh-TW, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR06MB4980:EE_|TY8PR06MB9077:EE_ x-ms-office365-filtering-correlation-id: 94453a7a-9e01-4877-c4b8-08def9198cd4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|23010399003|376014|56012099006|10067099003|6133799003|18002099003|38070700021; x-microsoft-antispam-message-info: Ax4+9qQN5sft+BETskaStNomttXLTIWnQkrGdrgrcdKJGRoTlum5GxU4jzFCUYRFDo3boBJRnpHMdS2n4Q79Ku7VPdAZxvxXeY3ZqogvewdLX3sAEevEQ6R0OSMUfN1vD6M5xD8r+eKF/uji4ZTiyS2glYDbUbo8RwL0WL+OIjp+dRdXYrwsZLGlKXCcw2TEFA/8R44wr11C3b6k25kZO7NGm+VXDkIX9gb/66Axm6MQzow354w2A+R8SgnhLYgShZtbkguW/W2/qAsxqwM9WjysBT8eF0Iih+ui+5U/e7sLfHt50DLi/nFOPYWnmqZd6aX9SFe4n4Crf6racWYNz1IpbJvVGZopgeGPA+3ajQ9Qp4mKvRo6pGDddfYnGRP6mmF9P7A5egxWEnzaIvhIpMfxy1YyZ1ViQyEQnh43ZmkI69cqwJMKs3He0idrhgOG5iLnZVaLGu4qN4psaYzsarnyB3y02hzIb4fDomiz0+Dcd2j25Zd04VMd6PwPuyVmswcQUcZSat6fADNgheGnF5TAe5IcbBKhkOEUQxSD906+oTOWXyxooluCnu/P6w5hwDWlCAODbbo8w6sMCNEwRHQJbgzdsoM8fYmuBX+fRUkQFJC+femtZ4QW1WFg+JPbGQXQdvEKxanecwiD/o/NuZYGlLj6IDWH5NjCns0Q3qZ1tg7giwU/14keQ5GIrPY7vnnjDuNbusJRL9+80IIFRjJjkcfJjsq4fuEpEAhH7/s= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYZPR06MB4980.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(56012099006)(10067099003)(6133799003)(18002099003)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ff2CNKcOpcf4Nz/3qNbs/BU5xyqmuRk3X54pcEXvTS6BIaBRFC+UCQ5yDL?= =?iso-8859-1?Q?nvjvL1K8xJIqVZ31yxT1h8WvHmRNlZ8OHQJt2iD26XIXBGzapdCJTsicXP?= =?iso-8859-1?Q?/NBU8me32Q5QpxH1SEreN8V3o8zKxbHZly26UFtvObKpBxVtoIWSAFVWME?= =?iso-8859-1?Q?zIOqquw/h+GgbRPTkUGgaz4GeOiLUWvB04wHK9UmtfXtN4Rwow4rGVyPtE?= =?iso-8859-1?Q?kuZPWpNyZv1JMcb9gKbkQtb2tx64HDgf+i5/LSbqsaTD+jAp5DLO+c4XQi?= =?iso-8859-1?Q?0vQsoj8jFbiFdtEma6HVW1JMpFu37smopq4vTWAZzUy5VH5GrqdJazfMQL?= =?iso-8859-1?Q?tVWBpRnqDErdCxyTEqklqkbJ7Dp2V0UlOOBZ2wBq7SuXom096ryeortiog?= =?iso-8859-1?Q?lx8Goo4xweAHOPfIZoKNwImOuvT8+Qv4ywWWK5aPiglMRMTr9fX5TQYcHc?= =?iso-8859-1?Q?ev/aJc8INwLdMcl0ywk7xW4GMVOJZCgHG0ZxhxpoFOIWj4LGCC1/vOSLpV?= =?iso-8859-1?Q?VZD46gQBAbcEXhyEUhbScqbzKKFictq99rfrT52wyX8QJgWXk91dPQ471W?= =?iso-8859-1?Q?srpyYizofwReH8DJ0LysEFSD4wIepbqEQ4aDKKtanGR2F0vTdXVyICTUMQ?= =?iso-8859-1?Q?B7JEgKSgqFNzVqFHYbhJcpQqci/VL1SwSzw7aJo5++9oPMeQo6fy/TR2AC?= =?iso-8859-1?Q?SNiBp/s0E9aT7z36PNRn+mbaScmgXumeIUExh9X5xDYqnpz8dfhEBU6Y0I?= =?iso-8859-1?Q?jlzalxxUa4FFyI+/Fd09oROII1uI7iWDgo4TCV3qyZ3RZCuvBQfjVZSd8a?= =?iso-8859-1?Q?oJZZGT/jkkKC2Y+lml8MZ7ZZcIaVoqi7ixCFhqk9zpDcyLEFNt2ky900gO?= =?iso-8859-1?Q?QLtDJdKQo3+TKt/CVb91jjNCi9emcqDys8kuxr74i2694Fdeu0kTgglhpc?= =?iso-8859-1?Q?QtkY0orlyz5f9OtXTXjuXElV4qPwHwcF2gDGpZzZMO1FQlpDAiCmfsVE6C?= =?iso-8859-1?Q?T4hwQSGDyFtgSJhAu1gDH3uVlrXEdq61nsPArIwL+dRcyJocXZJUHVvcpo?= =?iso-8859-1?Q?ugVfXRiJkh5Bzfwy8UA73EERZb+2mavdFs+1ZlYdhdbTZ/zwPvszc7l2vz?= =?iso-8859-1?Q?kbEESbgJ9vjqPOw7WsjDXgGCGbL5jQUITMP/rpVh+LrYkLzbetysY8hbyF?= =?iso-8859-1?Q?MLLrbCMgB1zKnHS4GGhmy/A15Bl5Jjq2X3eSdGGCdcS+xHLXqwuEqO09yz?= =?iso-8859-1?Q?tgSRBuI4UnhdHztCRJweKzoYd+UOKAj7mDbttDTTPo8cgrOv5mtbdEvYe7?= =?iso-8859-1?Q?QZZ3uV4okP6bNp52z7pdHHRdjpFDfGk+ZKtQJy1LVporNBOXhn+ceowBv4?= =?iso-8859-1?Q?9fIj+7cMxMqjKsRV6b1hdmNsHpiwvh1zMr3/t8AKodWS4bTdTxnuhTeDPn?= =?iso-8859-1?Q?c/4Cj0uQ6qfriv5+9j2Dg8VTyAsM8gKY27tbwmHrxEKjiif9v3okMcQotx?= =?iso-8859-1?Q?VXDt/HF/sFrUh9LDXhCa/xeqK8gQdsgCUDJ0Xa1aXcwvl/qv0J1glLx7mA?= =?iso-8859-1?Q?dREaC+9l2DlGZAGplOaNEks8YWtcC+z1RzYdAwiHmG1kX74kXU8enbQq8A?= =?iso-8859-1?Q?FJB7x7Xz0dv1iQnwElQsE4dN1Pugu7+A3k65QeqeQ91fZK1HkX7xLJFMdL?= =?iso-8859-1?Q?ePIWs+pByQGXcUCst6EXTDqpbZTfr1xKMlkZQvVfcmhCf0L8845aHr3eA3?= =?iso-8859-1?Q?orySHTFcObebWqCX+gPUDukGPinODlhiUP/pugY+mUGqMiT4900vrsgwXH?= =?iso-8859-1?Q?IWy+JqoE+A=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: nI4uCio6bJBr6pwHIHv3FQLzA45lHJZOD8nXf+hO86+b9enp/A+oMWGXvhiESRwf5Tyb2Jmmbrt2K5NdyYmlqtE5aPf5ZkTEjQpy3gwLSO0ptl/W7Yr9y0rastu645buZne5OuzviXEWZSgNXS8DVya/nyZ+A0CEXmSE9p/friP01DfvZzP9qtmAxW3ZiFItdccfXvl5wOs32t/3VJFcU1dM4eABWwq3y9WSwwqBm54FSmMj/zn+Zf5HUHp/QAPJqb5G/ZTuRZJxs3ANFcLfJP8Q5vMyiPx20GeYdka5kYwsJUBjDfWEmKlcm+w1jdUbHVtWkzOE08HNZnsyprMoww== X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR06MB4980.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94453a7a-9e01-4877-c4b8-08def9198cd4 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Aug 2026 09:02:06.4814 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XS+53Rf6H4DreYSpDijfwkeUBj/Juj+V9a4vkS5fw6jyEyuZqs1rGzeijHaNjnKeTh6BKwBMQEYnr/f9jl28gRs+6bQW3k54rZKoSYk2FA0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY8PR06MB9077 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c40f::6; envelope-from=jamin_lin@aspeedtech.com; helo=SEYPR02CU001.outbound.protection.outlook.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, 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.29 Precedence: list List-Id: qemu development 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 @aspeedtech.com) X-ZM-MESSAGEID: 1786611787246158500 Content-Type: text/plain; charset="utf-8" An SMBus block read takes the block length from the first byte of the transfer, and firmware reads that byte back from a register rather than from the transfer buffer. The receive paths never updated those registers, so block reads reported a bogus length. On AST2600 the driver reads the length from the receive byte buffer, I2CC_MS_TXRX_BYTE_BUF[15:8]. The datasheet documents that field as valid while the DMA buffer is not enabled. The byte mode receive path already updated it, but the pool buffer path did not, and the driver selects buffer mode by default. On AST2700 the driver reads the length from offset 0x84 instead. Add I2CC_BYTE_DATA_LOG at 0x84. Latch the first received byte from the three receive paths: the pool buffer path, the DMA-to-pool path and the DMA-to-DRAM path. Each latch updates the byte data log, and updates the receive byte buffer as well while the DMA buffer is not enabled. The byte data log is outside the register window of the earlier SoCs, so it is only visible on AST2700/AST1040. Signed-off-by: Jamin Lin Tested-by: Mikail Sadic --- hw/i2c/aspeed_i2c.c | 31 ++++++++++++++++++++++++++++++- include/hw/i2c/aspeed_i2c.h | 2 ++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 68bdcd0e25..e6d0eee816 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -159,6 +159,7 @@ static uint64_t aspeed_i2c_bus_new_read(AspeedI2CBus *b= us, hwaddr offset, case A_I2CS_INTR_CTRL: case A_I2CS_DMA_LEN_STS: case A_I2CS_INTR_STS: + case A_I2CC_BYTE_DATA_LOG: case A_I2CC_VERSION_CTRL: value =3D bus->regs[offset / sizeof(*bus->regs)]; break; @@ -334,6 +335,24 @@ static int aspeed_i2c_bus_send_dma_pool(AspeedI2CBus *= bus) return ret; } =20 +/* + * Latch the first received byte, which firmware reads back as the SMBus b= lock + * length. AST2600 reads it from the receive byte buffer, only valid while= the + * DMA buffer is disabled; AST2700 reads it from the byte data log, a regi= ster + * the earlier SoCs do not expose. + */ +static void aspeed_i2c_bus_latch_rx_len(AspeedI2CBus *bus, bool dma_buf_en, + uint8_t data) +{ + uint32_t reg_byte_buf =3D aspeed_i2c_bus_byte_buf_offset(bus); + + ARRAY_FIELD_DP32(bus->regs, I2CC_BYTE_DATA_LOG, RX_BUF, data); + + if (!dma_buf_en) { + SHARED_ARRAY_FIELD_DP32(bus->regs, reg_byte_buf, RX_BUF, data); + } +} + static void aspeed_i2c_bus_recv_dma_pool(AspeedI2CBus *bus) { AspeedI2CClass *aic =3D ASPEED_I2C_GET_CLASS(bus->controller); @@ -349,6 +368,9 @@ static void aspeed_i2c_bus_recv_dma_pool(AspeedI2CBus *= bus) pool_base[offset + i] =3D i2c_recv(bus->bus); trace_aspeed_i2c_bus_recv("BUFF", i + 1, bus->regs[reg_dma_len], pool_base[offset + i]); + if (i =3D=3D 0) { + aspeed_i2c_bus_latch_rx_len(bus, true, pool_base[offset]); + } bus->regs[reg_dma_len]--; ARRAY_FIELD_DP32(bus->regs, I2CM_DMA_LEN_STS, RX_LEN, i + 1); } @@ -443,6 +465,9 @@ static void aspeed_i2c_bus_recv(AspeedI2CBus *bus) pool_base[i] =3D i2c_recv(bus->bus); trace_aspeed_i2c_bus_recv("BUF", i + 1, pool_rx_count, pool_base[i]); + if (i =3D=3D 0) { + aspeed_i2c_bus_latch_rx_len(bus, false, pool_base[0]); + } } =20 /* Update RX count */ @@ -460,7 +485,7 @@ static void aspeed_i2c_bus_recv(AspeedI2CBus *bus) } =20 aspeed_i2c_set_rx_dma_dram_offset(bus); - while (bus->regs[reg_dma_len]) { + for (i =3D 0; bus->regs[reg_dma_len]; i++) { MemTxResult result; =20 data =3D i2c_recv(bus->bus); @@ -476,6 +501,10 @@ static void aspeed_i2c_bus_recv(AspeedI2CBus *bus) return; } =20 + if (i =3D=3D 0) { + aspeed_i2c_bus_latch_rx_len(bus, true, data); + } + bus->dma_dram_offset++; bus->regs[reg_dma_len]--; /* In new mode, keep track of how many bytes we RXed */ diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h index 05937a7a0b..c8e6ea54ad 100644 --- a/include/hw/i2c/aspeed_i2c.h +++ b/include/hw/i2c/aspeed_i2c.h @@ -231,6 +231,8 @@ REG32(I2CS_DMA_TX_ADDR_HI, 0x68) FIELD(I2CS_DMA_TX_ADDR_HI, ADDR_HI, 0, 7) REG32(I2CS_DMA_RX_ADDR_HI, 0x6c) FIELD(I2CS_DMA_RX_ADDR_HI, ADDR_HI, 0, 7) +REG32(I2CC_BYTE_DATA_LOG, 0x84) + FIELD(I2CC_BYTE_DATA_LOG, RX_BUF, 0, 8) REG32(I2CC_VERSION_CTRL, 0x94) FIELD(I2CC_VERSION_CTRL, FUNC_CFG_DMA_EN, 2, 1) =20 --=20 2.53.0