From nobody Sun Feb 8 22:07:30 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=1770189510; cv=pass; d=zohomail.com; s=zohoarc; b=Td+a7sVsgiX3Wv4p2cVGIJTIpC1QS1tiwupagSHrP99LFMVZBE6ehTTRMYWoI8ADDwMJQLUEG4ECvdmprxG327rnoIa60PbmmXtbVroNQ9Us4wetg2bJ6NZ2Q2QA4NcDPhld/YOhj7QKtnua/cXN/JVO27woWQbO8ca1eGcc9/U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770189510; h=Content-Type: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=cyYxuhrI0BymAAqolC1SpdN/8tKdX8dYK1d+JE+lnbM=; b=dCY5B1fYyMlSGqmnpqGc0huHzEV7NSZPcYXoNi7kXFRjCCRR7ykt6RE7SLOvJ8lUyYHQsgeMPxro4AD2vtYscDWAOpWI3M6RCnI/w+s2KPfzm7OHWe+TY3ymlO3YJE2KiKaNXA4JNBEe7uPr8oLd0EQUeP9dNWd73pt34JxBSG8= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770189510262223.9152923420977; Tue, 3 Feb 2026 23:18:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vnX8p-0005wg-Vz; Wed, 04 Feb 2026 02:17:36 -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 1vnWZ3-0004We-G5; Wed, 04 Feb 2026 01:40:39 -0500 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 1vnWYw-0004HE-2h; Wed, 04 Feb 2026 01:40:33 -0500 Received: from SI6PR06MB7631.apcprd06.prod.outlook.com (2603:1096:4:239::11) by TY2PPFD3DE53D05.apcprd06.prod.outlook.com (2603:1096:408::7ad) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.15; Wed, 4 Feb 2026 06:40:20 +0000 Received: from SI6PR06MB7631.apcprd06.prod.outlook.com ([fe80::afe5:a3f1:b435:e43c]) by SI6PR06MB7631.apcprd06.prod.outlook.com ([fe80::afe5:a3f1:b435:e43c%4]) with mapi id 15.20.9587.010; Wed, 4 Feb 2026 06:40:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WKrhIpR60P/ZAQ8xjtCaWKc/uoRReR1XKXxJvbOhJW7c7oVW4J2D1K17KHhMYKY2NZOvJDn8HRgyBq8kZmNtUd9gQSS08S+hXlgX8Kkn1XEs/FYq7iu6jShkbT7E+WOUbpiKkeu8s9v3ArM+ryOlpDCyQOYC/TKYsldgqrAkzMtP25QPNoVMF83xhiJuIHgoh/6hCQ+QnFvEvM9+OCPsoRkn0f6G/16DOu/4/TReiGsplHQiInMG+OI0ZC7163YCVagZoNjyeeIZCxeoIkig1AHaSlHsSFzsE1TBJk9IWfQa1XXUzvou4GSPW2zRqf044fXnq/k6WXt72wEoBHut7Q== 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=cyYxuhrI0BymAAqolC1SpdN/8tKdX8dYK1d+JE+lnbM=; b=o8+RzorvMP/bl0/uTbI+MCfJQyGcCs2Chj1pKq/PmL0zR3OUoCTcUGlSHPo6+7KzO44qgOiXRO3ZFmQcxYoO10ZRW9clLX1RbqDBY1WERaWd/DtrpARUCdP1NcjeecAdih1qWARGPnDZQ/4BQG0USL97AAcgHUItN574y1gtnk4zcqfVPb/b72KsOhO3b4fH4kazXSUZ0bm3JvziPOFKdGy/PCUrCYmBbu9dAc2Z1W76XR+ZCf/91qXol9RZ4R0gt7XBHqVe8VCjRpJCQWRNf6t/obuDclTAlyrWmhzHsEjJ5mSOUi/F8Bdl7SmD98lm2cMQmJM2RBIKCdq1K66+jA== 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=cyYxuhrI0BymAAqolC1SpdN/8tKdX8dYK1d+JE+lnbM=; b=ls7raruY1pR3yF6qeXEtrA1N+7vnVvxz49SLgL3smFcwsXXJ6X3ANY5XAiwVpn1Jd4IkSfFOb8245Jrv+Ey3clFDS22aKTuBHrEx8BxJ4QIrzJfs4Lg7hZjcgMfl2JZm8U/KU87rWvkR5AySaEHKSF0NjPrh43WxofEJQ+s0z1pm7NSM8A1XutndiekIdYxjnCt20xMhEvMeKrDB+VZ6wijf8w+Czxvo4UYqqZBqD6UhSKdSJDL9fWdB1gu1FEWL/glfNa5O0OaBwvgbC46ue63AP6sXTOAe0iPBl9G5AGDPidBp937zl8ys3Ck6V0RqEn6fR7ibOZqAB4dYmhvj4w== From: Kane Chen To: =?utf-8?B?Q8OpZHJpYyBMZSBHb2F0ZXI=?= , Peter Maydell , Steven Lee , Troy Lee , Jamin Lin , Andrew Jeffery , Joel Stanley , "open list:ASPEED BMCs" , "open list:All patches CC here" CC: Troy Lee , Kane Chen , =?utf-8?B?Q8OpZHJpYyBMZSBHb2F0ZXI=?= , Nabih Estefan Subject: [PATCH v6 01/22] hw/misc: Add LTPI controller Thread-Topic: [PATCH v6 01/22] hw/misc: Add LTPI controller Thread-Index: AQHclaEhS8NApFNZ0UyJ2HrCGYRM1g== Date: Wed, 4 Feb 2026 06:40:19 +0000 Message-ID: <20260204064016.3515639-2-kane_chen@aspeedtech.com> References: <20260204064016.3515639-1-kane_chen@aspeedtech.com> In-Reply-To: <20260204064016.3515639-1-kane_chen@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: SI6PR06MB7631:EE_|TY2PPFD3DE53D05:EE_ x-ms-office365-filtering-correlation-id: bb1d577b-253f-4b16-e2ab-08de63b84436 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700021; x-microsoft-antispam-message-info: =?utf-8?B?REhTcEU3dE9zTTM0VXF1Y2YyVlJqRFVQZGp4Q0lWV1lnR3A0Y2plNWpBN2pS?= =?utf-8?B?Z1Jod0RBSXFQa0huSzI4Um80TTI2Z1NkeXVjenMrd1RQZjVDdnAzRDJxWWl6?= =?utf-8?B?UjZHS3hSS2tGVWcyclVDK3k2T3RRbTgxNDVxc2M0eGdOLzZEVkJRcmYzOEF5?= =?utf-8?B?NnJkOE5kaHFuaVBiUFBUUGJ1QVZpRmd6MTRGN281VnZBaCt4QlRJQldvN2tK?= =?utf-8?B?VEY5SHIzUWNhSXp3SDlWMElycklGOHNkZWcwVENFdGI4NmN0RmN6WkFaSVBJ?= =?utf-8?B?blZnSDgxNTV5c3ArbE53ZlRTZzdQUGdOblhnaUlKL3MrRE9lWXlsV1ZZbE9G?= =?utf-8?B?QVlYS0IvaGxJVUlHVzVyeEVBbU5XTXBqTjdrQkNybkRFUWRjQk9wOGIzUU1E?= =?utf-8?B?Nk5IN2x4aFh6elZJNTRrRzhFakowSUo1SjJob0FtWHJTQzdaQzVuRFhrSWNX?= =?utf-8?B?YUtLbVZ6T2hpS2J2MlVEOWtIeWtOSFAveWt3ekJNUHRhblNXMHpzTnZmaURv?= =?utf-8?B?dFZKN3g5K29WK0tFdG1JVHNiSnZ2N1lhVWNhamNaQVRYSnVYR2NSUVllcW9C?= =?utf-8?B?QUxZZlJwdkR6RXU2OVJGMnI1bjVpN3RIQzI1TUpqYVAyWXhLM3RQbG5oRGJD?= =?utf-8?B?QldkTXNrbGlRS2tKZ0JOcFZRWFNkRWYzcE83cDFkU1BrNG05N0s3U2JRSEhJ?= =?utf-8?B?WmRsdldNRlloNDNMcm5saFRpeE9wdmFMczlld0tOakh0c1Mza2dQbVVWZFN6?= =?utf-8?B?OEVNOXpONVNCcU1wY1JTby91NkROaTZ4SWFGT2JZamlhVjJaUkh4ZkdLWjJ5?= =?utf-8?B?Vm1iYnN4SFJvU3dmOHVUWGVvUUZLQWxUTmFhb3RuelYvR0NZSkphMGp0TVVO?= =?utf-8?B?TGE2aS9MNkZmeGVibmJkY01MbFJyOEVaTUlBUjdEMkhDOVpuZWdDSXdxZ3VN?= =?utf-8?B?WFN3NG1ZV0pxMm9LUnFZQS9CU1NDaGttTFZkWkNmUVcwdUNjSWpUNkxuVFNC?= =?utf-8?B?QVJldmVzQldzblhGb3VrNE5lZkVzUUFDaXRlWUZZOG4zR08ydHhHL3ZZVXNM?= =?utf-8?B?azE3bmtHMThrS005SklRb2FuVDRRcXNIM1k2TnVneHRPQ25qVnpSazBEODAy?= =?utf-8?B?QysyWlZaV0g0ZUdtT1ZLVWJ3TVkraUdlNDZFZVpjUW9ZKy9teFNETnhXK3lW?= =?utf-8?B?ckUwQzN6K0FHVmJlbHF4MjN5OUdpMzkvb2NBaldKZkNsQWVHY3RPV0FiOXl5?= =?utf-8?B?WUs4WHQvM2hPQk1nTjlVaHhvSmlyVDVoWWlSTWIxMmQrdGI0MGxobUdNSXp3?= =?utf-8?B?MjdnS3R3ZHRNS0lkREVmZTRGMVNGcHZGam1RdUsxQTNHa1J1YnNONk5YcnRP?= =?utf-8?B?UzByUHBDVWQ5L2lMa0lUNlQvaFQ5RU5qemtZZUNtR3J2bjBsRmtwZWdtSU1I?= =?utf-8?B?TnlKQ2Z4aG13ejRGbDBDVnRERlV1akFoMkIyT0JUdlVHeHQ1ZUFDUE5YcitY?= =?utf-8?B?TUwyNjNnTXBLbnpKcldxcnlHaTl3Qjg4Uzh6ZnAxOHBlWGlYZVVLMTdVTU1u?= =?utf-8?B?aVV4allmTi9JZTFXMy9aWEZlSFJrZHk4TWxFZHpNWXlUd09EbWxzMEthNHIy?= =?utf-8?B?N3h0NDdxNDIydTlZVlJMeHFycWdqQTJYU2p5SFU4TFRUWUtaNGppYkRXdW0v?= =?utf-8?B?bTlBRnE3WGRHcm1FR1lYcEhsUjY1ZTkzUEs3ZE45MUdNa0k0LzNtMUcyV0ZS?= =?utf-8?B?eXdGeTJZWEtJRngwZUdidW40NkNYYjgrUlZpZ2JMSmp1WDN5T0svajAvcFY3?= =?utf-8?B?S3dlbUc2VEsrdEg4cWx1NjM4bHFpY0taSWZVNE9HT2swam5yUGZNU0lpSEsv?= =?utf-8?B?YUtOcWw5MzUxM2plNklqU1ljT29EV3l2bE8wamg0SUR5Nk5BZTV1eVVNMnJG?= =?utf-8?B?MWpDVzUrUm1reXM3NjlNd1gvUXFZaWNqV1lXY2poSERkZE1idS9yQ2hFWW90?= =?utf-8?B?eWhrZnQzZndUcFh5SytNSmZHTE1NUjFKcy8xYzhZMjdPU2RseXI3Z043TWRG?= =?utf-8?B?R2E4dUFhclF1RXBKSEt1YkJ0Rlc5QUIzOXRiZERaVkwwNnNNWXVkSU9Eam9h?= =?utf-8?B?NzVvL2dqUVN0UC8vK0JKQXdnN2V6VkEreXQ5b1JWbHZ6NmtiQjJKZE9SbVdV?= =?utf-8?Q?3U/1WRcrOmxx566uuE5D5l0=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SI6PR06MB7631.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bGdBTGVyUjRGQkhzWU51MHVmVXFqdnY3SXgwSEJxQUkzNWUxR1R6OWNyWCtU?= =?utf-8?B?RklMTDRXSWJPbFdxaEYzTDVycHlheHNiVGVMSHNWUXZnbDZVUGE5Z1UvVFNQ?= =?utf-8?B?SlBvTGl5clNZOXRjQ0duOVZmVkxSdFhicWJkRDh4R1g1dGt2LzdqQVhVb1Jm?= =?utf-8?B?R3Mwd3gxc1VDODNPeGVGa1cvMDRnaHVaVDVWS1h0cjYyTEhidkswQ2ZHZVRX?= =?utf-8?B?K1AzL2lRelM5cHJsQ3l3ZkRidzJaaW1wbmtQR0VVV2tNOE15OHJ5SENKcEM2?= =?utf-8?B?SitTNUJWMmErL2RYMHNJVTB1dFZEc1pUWEJ4ZmV2UlRkaVZEU28xdlFqakdl?= =?utf-8?B?MkgyRlJ0TUk4VFFISnVEMXdJSGFKZjBPL016NFJyRjhpOWVHYVFKWlFXdmJN?= =?utf-8?B?UTFzeUZJTml3OXo0ZlpGY1VSZzFSS2J0eFBUQXRxZHp1MG50eUZLOGhQS3VQ?= =?utf-8?B?aTlvRk1XT1lDMG9xQTdnc3BlM2ZrbERocXVxM0g1WjBVNHNWQmg1b3piUE1T?= =?utf-8?B?NitpeHpackxkcDJycWIrV2I0V2QzNHNrd1dWcFRvQ2UwVklvS0dxRVJiVCtn?= =?utf-8?B?T2VydVMzSjdlRnlSOGliVE8yOFA1aFFDeVhLOGZFWlRteTFMa2hIRU9JQlc5?= =?utf-8?B?aG5wODVrd282bEJMQW9lTnpYTGhiWTdTdW5zZk4rRy9VeU9WbHdqTFBWRlBC?= =?utf-8?B?MkJLKzJENFJqS29veEpsUElnTG1QMDNpTWlKY2VscUsvNnFNeUgvTmZrakIx?= =?utf-8?B?VU9mTm9mU3ViMTdqalk3OUIweUxZUy8rdDdGaHFLdVFxZlh3bDZ3MWo5NUFh?= =?utf-8?B?L2JNRkVnbVpscFoxdnZ3cEN0Q2NWZDlLSnUzQzZOdzJwZjhQQktRdzVyOWQ0?= =?utf-8?B?WGRzMnI3b0ZPSW8vUlgrem9UOEszaVhLREZDbWExYnFsMkdpaHZjck9tZ3pE?= =?utf-8?B?Zjl6K1YvNFJUT1hFYUdsbmQzanhFY09YdEEzVDMvU3ozdU1vS29aMjc0S2pz?= =?utf-8?B?V3ZoKzhlQm9CVktmSDVMTnlSSkllRENNNVYxbThIVmhsT1B2ck5Td05JejY0?= =?utf-8?B?dFJjR1k5LytTRUJsckJEUFJMRUVMcDBsd2ZKR1lVT1VyVkhGV1Axa09hNFpP?= =?utf-8?B?U09WamhTaThrYmxxbTBBL0ZnZ0pqbUxhb2hacFNUMFNpcW5MWWFtam01dng5?= =?utf-8?B?dEFLeWl2clN4aUlZMW02U25OdlFsOWUyd09WdmFJQVVoY1ZweTRGWmdnS1VZ?= =?utf-8?B?NWtpaU9uNmxzSXYyWXU4M1U5ZHIvNis0Q0ZGWE85UllMQitkbERiaG01SitR?= =?utf-8?B?MHhSaWFod29QVGxJaFVPaUxpTzI5MmhCZkRjN0lqbmFCd094M3pmcWkzUmdl?= =?utf-8?B?THlSWmFOaGtCQUp2M2UycUhWYnpqemNEMzEwNHJpN29SOGlQUjIyTnpCVHpt?= =?utf-8?B?SkpGemlReUUxUDJBdWRrN1FzdTlPMVJYUFREUm9qYjBoV2xRZFM2cXYxVm9W?= =?utf-8?B?QWVkN1BGdzVNM3hNZVcxazUyMnB4UDJyOHZVcHYxQ3NNQ0xPRWROOE45aXRk?= =?utf-8?B?bU83SGhyZGR6c3NoQXYwUEVLWk96QkEyZDFsRW82NTdkTGFReEltUUFLbDJ3?= =?utf-8?B?WW5NMkNnMlZXZ1hLRmlOSlBiaFNnVmVqWDJncnIyTXZKSHVMV3FuTXVFRHpB?= =?utf-8?B?bFV3eVhSbFpxdzZsb0loOENrbGd1SjJ1Nm9GQ1M1TUFCZ2lDVEJodlIwY0VF?= =?utf-8?B?eFYrejU4OUxYOVEzZDhiN3VYVno5cDg3Q25rNEpMQzNpM3A1SXZsb2NKRVhx?= =?utf-8?B?aXlZOExXNTJGdkpIdVVUV1lLK1NjNFZlQmxmREFENWpyandPZGtrYTF2Q1F3?= =?utf-8?B?bkVtUWVGbXArdEJZYXZSREhUVCs3bC9XQk5FOStsMDVUN2R3TjEzMzdFamdh?= =?utf-8?B?MWVNUVByb1VwNXhNMmJyWkdNNUNObnVFZ1RxS1c3YkxnMVVJV21RdzVzWFAx?= =?utf-8?B?VHQ1VWVUbGlucmtrVjB3TG9UbWRpckJUTVErWTl0T0twYi9hcHc4MTEwK2hC?= =?utf-8?B?dDVzUEY2bzVHNnIzVGV4VXRBd3RiRkIwVTVEWGVzTExETW1BT01VUm9sVDFp?= =?utf-8?B?cE12cmVpZUhYRDJ1QjhoVDQ3a0FyMnVqK21DRmdRNW85MVZqMHJvcGlCQy9V?= =?utf-8?B?VkJiS2dwUjNKak5yUlkwRFJFYnBrb25tOVRRS254M1kyb3dZNXZUUWFMOHpW?= =?utf-8?B?Ymg5VmlMLzh2bE90UU9PdHZhdElCNUEwTXJ1VUVjQ3VZTEJ0S0VTc1JJTGd4?= =?utf-8?B?K1pTNG5OUkNiRVorQ1A4cExhRnNmWjd4Sm9wamExWjhySXBrYjJPUT09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SI6PR06MB7631.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb1d577b-253f-4b16-e2ab-08de63b84436 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2026 06:40:19.1481 (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: TcrloFsdwH2yqOQdtxV9D9X91vL43YJ6QNSNHTyE3fluPFLJleUFz1YhHKbvlNzX+o2N4BqsA/TeLcI95qSUpqV8oe5Cyc2a1L8LhKUZow8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PPFD3DE53D05 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=2a01:111:f403:c40f::6; envelope-from=kane_chen@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-Mailman-Approved-At: Wed, 04 Feb 2026 02:17:10 -0500 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: 1770189511463154100 LTPI (LVDS Tunneling Protocol & Interface) is defined in the OCP DC-SCM 2.0 specification: https://www.opencompute.org/documents/ocp-dc-scm-2-0-ltpi-ver-1-0-pdf LTPI is a protocol and physical interface for tunneling various low-speed signals between the HPM and SCM. As shown in Figure 2, the AST27x0 (left) integrates two LTPI controllers, allowing it to connect to up to two extended boards. This commit introduces a simple device model for the ASPEED LTPI controller in QEMU. The model includes basic MMIO read/write operations and sets default register values during reset to emulate a link-up state. Implements register space with read/write callbacks. Signed-off-by: Kane-Chen-AS Reviewed-by: C=EF=BF=BDdric Le Goater Reviewed-by: Nabih Estefan Tested-by: Nabih Estefan --- include/hw/misc/aspeed_ltpi.h | 33 ++++++ hw/misc/aspeed_ltpi.c | 193 ++++++++++++++++++++++++++++++++++ hw/misc/meson.build | 1 + 3 files changed, 227 insertions(+) create mode 100644 include/hw/misc/aspeed_ltpi.h create mode 100644 hw/misc/aspeed_ltpi.c diff --git a/include/hw/misc/aspeed_ltpi.h b/include/hw/misc/aspeed_ltpi.h new file mode 100644 index 0000000000..3330a49b05 --- /dev/null +++ b/include/hw/misc/aspeed_ltpi.h @@ -0,0 +1,33 @@ +/* + * ASPEED LTPI Controller + * + * Copyright (C) 2025 ASPEED Technology Inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef ASPEED_LTPI_H +#define ASPEED_LTPI_H + +#include "hw/core/sysbus.h" + +#define TYPE_ASPEED_LTPI "aspeed.ltpi-ctrl" +OBJECT_DECLARE_SIMPLE_TYPE(AspeedLTPIState, ASPEED_LTPI) + +#define ASPEED_LTPI_TOTAL_SIZE 0x900 +#define ASPEED_LTPI_CTRL_SIZE 0x200 +#define ASPEED_LTPI_PHY_SIZE 0x100 +#define ASPEED_LTPI_TOP_SIZE 0x100 + +struct AspeedLTPIState { + SysBusDevice parent; + MemoryRegion mmio; + MemoryRegion mmio_ctrl; + MemoryRegion mmio_phy; + MemoryRegion mmio_top; + + uint32_t ctrl_regs[ASPEED_LTPI_CTRL_SIZE >> 2]; + uint32_t phy_regs[ASPEED_LTPI_PHY_SIZE >> 2]; + uint32_t top_regs[ASPEED_LTPI_TOP_SIZE >> 2]; +}; + +#endif /* ASPEED_LTPI_H */ diff --git a/hw/misc/aspeed_ltpi.c b/hw/misc/aspeed_ltpi.c new file mode 100644 index 0000000000..131cea9c6b --- /dev/null +++ b/hw/misc/aspeed_ltpi.c @@ -0,0 +1,193 @@ +/* + * ASPEED LTPI Controller + * + * Copyright (C) 2025 ASPEED Technology Inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/log.h" +#include "migration/vmstate.h" +#include "hw/misc/aspeed_ltpi.h" + +#define ASPEED_LTPI_CTRL_BASE 0x000 +#define ASPEED_LTPI_PHY_BASE 0x200 +#define ASPEED_LTPI_TOP_BASE 0x800 + +#define LTPI_CTRL_LINK_MNG 0x42 +#define LTPI_PHY_MODE 0x0 + +static uint64_t aspeed_ltpi_top_read(void *opaque, hwaddr offset, unsigned= size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + return s->top_regs[idx]; +} + +static void aspeed_ltpi_top_write(void *opaque, hwaddr offset, + uint64_t val, unsigned size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + switch (offset) { + default: + s->top_regs[idx] =3D (uint32_t)val; + break; + } +} + +static const MemoryRegionOps aspeed_ltpi_top_ops =3D { + .read =3D aspeed_ltpi_top_read, + .write =3D aspeed_ltpi_top_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + }, +}; + +static uint64_t aspeed_ltpi_phy_read(void *opaque, hwaddr offset, unsigned= size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + return s->phy_regs[idx]; +} + +static void aspeed_ltpi_phy_write(void *opaque, hwaddr offset, + uint64_t val, unsigned size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + switch (offset) { + default: + s->phy_regs[idx] =3D (uint32_t)val; + break; + } +} + +static const MemoryRegionOps aspeed_ltpi_phy_ops =3D { + .read =3D aspeed_ltpi_phy_read, + .write =3D aspeed_ltpi_phy_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + }, +}; + +static uint64_t aspeed_ltpi_ctrl_read(void *opaque, + hwaddr offset, unsigned size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + return s->ctrl_regs[idx]; +} + +static void aspeed_ltpi_ctrl_write(void *opaque, hwaddr offset, + uint64_t val, unsigned size) +{ + AspeedLTPIState *s =3D opaque; + uint32_t idx =3D offset >> 2; + + switch (offset) { + default: + s->ctrl_regs[idx] =3D (uint32_t)val; + break; + } +} + +static const MemoryRegionOps aspeed_ltpi_ctrl_ops =3D { + .read =3D aspeed_ltpi_ctrl_read, + .write =3D aspeed_ltpi_ctrl_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + }, +}; + +static void aspeed_ltpi_reset(DeviceState *dev) +{ + AspeedLTPIState *s =3D ASPEED_LTPI(dev); + + memset(s->ctrl_regs, 0, sizeof(s->ctrl_regs)); + memset(s->phy_regs, 0, sizeof(s->phy_regs)); + memset(s->top_regs, 0, sizeof(s->top_regs)); + /* set default values */ + s->ctrl_regs[LTPI_CTRL_LINK_MNG] =3D 0x11900007; + s->phy_regs[LTPI_PHY_MODE] =3D 0x2; +} + + +static const VMStateDescription vmstate_aspeed_ltpi =3D { + .name =3D TYPE_ASPEED_LTPI, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_UINT32_ARRAY(ctrl_regs, AspeedLTPIState, + ASPEED_LTPI_CTRL_SIZE >> 2), + VMSTATE_UINT32_ARRAY(phy_regs, AspeedLTPIState, + ASPEED_LTPI_PHY_SIZE >> 2), + VMSTATE_UINT32_ARRAY(top_regs, AspeedLTPIState, + ASPEED_LTPI_TOP_SIZE >> 2), + + VMSTATE_END_OF_LIST() + } +}; + +static void aspeed_ltpi_realize(DeviceState *dev, Error **errp) +{ + AspeedLTPIState *s =3D ASPEED_LTPI(dev); + + memory_region_init(&s->mmio, OBJECT(s), TYPE_ASPEED_LTPI, + ASPEED_LTPI_TOTAL_SIZE); + + memory_region_init_io(&s->mmio_ctrl, OBJECT(s), + &aspeed_ltpi_ctrl_ops, s, + "aspeed-ltpi-ctrl", ASPEED_LTPI_CTRL_SIZE); + + memory_region_init_io(&s->mmio_phy, OBJECT(s), + &aspeed_ltpi_phy_ops, s, + "aspeed-ltpi-phy", ASPEED_LTPI_PHY_SIZE); + + memory_region_init_io(&s->mmio_top, OBJECT(s), + &aspeed_ltpi_top_ops, s, + "aspeed-ltpi-top", ASPEED_LTPI_TOP_SIZE); + + memory_region_add_subregion(&s->mmio, + ASPEED_LTPI_CTRL_BASE, &s->mmio_ctrl); + memory_region_add_subregion(&s->mmio, + ASPEED_LTPI_PHY_BASE, &s->mmio_phy); + memory_region_add_subregion(&s->mmio, + ASPEED_LTPI_TOP_BASE, &s->mmio_top); + + sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->mmio); +} + +static void aspeed_ltpi_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + dc->realize =3D aspeed_ltpi_realize; + dc->vmsd =3D &vmstate_aspeed_ltpi; + device_class_set_legacy_reset(dc, aspeed_ltpi_reset); +} + +static const TypeInfo aspeed_ltpi_info =3D { + .name =3D TYPE_ASPEED_LTPI, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(AspeedLTPIState), + .class_init =3D aspeed_ltpi_class_init, +}; + +static void aspeed_ltpi_register_types(void) +{ + type_register_static(&aspeed_ltpi_info); +} + +type_init(aspeed_ltpi_register_types); diff --git a/hw/misc/meson.build b/hw/misc/meson.build index c444e030ec..f7f1b0da75 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -137,6 +137,7 @@ system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files( 'aspeed_hace.c', 'aspeed_i3c.c', 'aspeed_lpc.c', + 'aspeed_ltpi.c', 'aspeed_scu.c', 'aspeed_sbc.c', 'aspeed_sdmc.c', --=20 2.43.0