From nobody Mon Jun 8 06:36:22 2026 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2116.outbound.protection.partner.outlook.cn [139.219.17.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCD803A48E9; Mon, 1 Jun 2026 09:53:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.17.116 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780307650; cv=fail; b=iloFv1TYxKouTNm9Dx8iKMTbpX+tP+/jYbXZx3bJCF64raZRQkmBZKnB/XZbqh1GYAsRD/++pGcopS7Wsvx8Yo8Cjzo/u/QJu6HkQfrAAyinYEp0cNuL1Z8zsL6bVyXflpOX9zdTasw6cwLkMcuGTvHn4odQ1jv7ihLbVukByqM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780307650; c=relaxed/simple; bh=uROYCZjqUOPMJeouu5r5SMM2Y61ah0Lnh+pazlcCgmE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=eXFRe7AOGQoEkNU4t0JKju5+jicUahEN1gLtoLSToA9eCSpiDydVxBP5HsflzPmfJLBZ/QGFGYx+5SPrYTpu4CU3r0if5vzUhoB7v6RpXmHc1n1u9Eft1kR+3Z4uQKKclfyK3kmf65/C7xPcUpkAib3/frQg/TUCWjafyNnXTiM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.17.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3y1Prg7ss6jQqWevRCYS0sSJTwvPO2Ee3dXxlZY7RpGUlnrnuClnEalhLb10rfx4GzLrzAvJvoez5vmCY4TpuiwKj02QBOLHuLC35pks06umbKM1xf+hTOciO1tUuHVE6hyaOTmHRAmE4Shfens/JvJoVqh4i+KOjwAhsjzjeqoBE6XFpjcouf+tBb0qx79JDXn7nycz9Eqd6nv9dM6C+Jz00Fn+Hc2DiOkY4Ix8ZO+mUGZFK800RsRm1ZjotEiUI+Ec3uZTkU/lzimttB2lgMpjxuEOIC90iVg1Z2WUHBXPyA5JIgFmyrnQMmP4IxfuWlZ2BwfsUZAMm+vfx1uRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=+CrTrilHq+cttg+FT7m4OzPDPWgBhSg8j5UgPVMCHFA=; b=oOkq6ByBDqUmIrlduqFTKcADp6YAH8aTydOLEdhr72Z+RhSbjmzAXJE1dNXnI64X0ILBjy5orKrym4fBXSe8zJjkZhi75dtecgslL1nVmNv9ugBOYi/e6F3oUeX/i5QsY4bQLwH8Q8/H2WvHZAWVfDSPg9AsnfpUL2GzDz3zyD7WynpLkmCkaFMP0LwexyAusqZMHYl3qyESfRvYrfnVouflR5vYQPJA3NtLMkC+Hh3fyitX1WWwDKTymFBPfC6vv+hl9K6orUy4gspE2hQH/lBWTFBDwKTWKK6FogjGj35YQ5/i6M3UoFjQcRJrKGox9Ov9TdrXXYZ8eR/mU0oJLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:18::6) by ZQ0PR01MB0982.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:1::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.7; Mon, 1 Jun 2026 09:37:53 +0000 Received: from ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn ([fe80::973:272c:ab11:7570]) by ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn ([fe80::973:272c:ab11:7570%6]) with mapi id 15.21.0071.017; Mon, 1 Jun 2026 09:37:53 +0000 From: "lianfeng.ouyang" To: Olivia Mackall , Herbert Xu , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Lianfeng Ouyang Subject: [PATCH v3 1/2] dt-bindings: rng: starfive,jh7110-trng: add jhb100, drop jh8100 Date: Mon, 1 Jun 2026 17:37:43 +0800 Message-Id: <20260601093744.84210-2-lianfeng.ouyang@starfivetech.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260601093744.84210-1-lianfeng.ouyang@starfivetech.com> References: <20260601093744.84210-1-lianfeng.ouyang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SH0PR01CA0009.CHNPR01.prod.partner.outlook.cn (2406:e500:c311:5::21) To ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:18::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ0PR01MB1269:EE_|ZQ0PR01MB0982:EE_ X-MS-Office365-Filtering-Correlation-Id: 865022a0-2bdd-4ad9-ff55-08debfc17426 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|1800799024|3023799007|56012099006|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info: YUxcACTHebs4fHr7hI+3R+3EUXe/KWeaRvldUJ1hw9jEnzq2dXviqbkqrkOrRpJH9FGt69lgQhIXKLL64s3ky6DEUfNstcnvcho4cOmGFZbbA9vOLeGgLf9pXWsP2EJvqpjrFvJGDWDETzzMNT6+Dfzt1lNzWJEdnHkkh42otpl7f8gNOv+SEjK4qLPWa9mDAyGLM+vs/pQm949B90YCTlOYALhrFsdGdZmay1lAO8z3XktkeLeEciJpEaK3+d+HxkC0rJ+5v/FbVdEXc2gO+GeNwm2mE/CT48iIARb3SPGZM9GCDPNb9tQ54+P48DV6IzEyfEyE6k8sqtU6zdJ55AplOk/eWTRu/0iqr5sHRMOsxr6U2iK4zj2zg4qXC+ntY80TspUA5VlyhCXeBTi2iN05IHx1QiRKod1huMQPhzB+lssXE1h4SdMjqNnAHyC7gVJa/ELMxxH2/quw8HgjhcJtkJ+BSopxnw2Q44GDlke7tiTXELSg1s8MyTIydiwUbGnCuVemI4MNy1+RW7E3YQelecyK5BERTaKWdvwXl+T/vOmDld3+s5Ypv4LfVqsj X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(1800799024)(3023799007)(56012099006)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UAgMy7dBvCAGyKYUvNNFtKB6ESGulhXKxugfFfM3oVyc+i6SHSTNrkHw1rj3?= =?us-ascii?Q?r+eIaXWILHaU1dTQDFZYHcvBzDOYZnT1j9CwcgoQ1+sq/K8g2OadV9bArlrk?= =?us-ascii?Q?VzjDMH/CpZShsfhh5cheWFpyGfKWyzXABRVazRwAxvq4Kep1WpT9OjG87G9c?= =?us-ascii?Q?6Zvu+7HJuGvgC8/v7r0NhPFqiFDNZ5Ghbk89owHKpNrD4xf3k3qdbO7ndwVX?= =?us-ascii?Q?gHHpCJXy5xLIAwBXUcNLvijXP9yE4eTLqD0FpDYB+yJApWMhUzMkxXc0+uQm?= =?us-ascii?Q?sik2hhRv7iUe5c93qGoLvFIYaJxjR/L+K7FrUJoadKbd0g7xAmfE3npeBfhf?= =?us-ascii?Q?lW6BKKAMp+JGXcQAEhG9g730/l4Omv1XHR72I68BQGT1L20sMtL7kDp5SX9j?= =?us-ascii?Q?P4bWfO8AvS0Bb/1vK51R3DK9IdqtyMrTaxYt4WmOngagrvZyEuhgVMQsI3qZ?= =?us-ascii?Q?ElU1PG64pQ3bUTI9AabKCFIwlGLqEKBlaYTp54EqLwFm2foFamUrAmYBwYvi?= =?us-ascii?Q?2I/Iio3NHLQpuB4zummA4XPT0uymTRELJxs+evDI6DhHgSFas07hJ0lHM5Up?= =?us-ascii?Q?G1C2BaqoCReZTfAjwNXgBhbHIBHRALsMlUpsli3dn3Y9xVTvt7ck8Vr00FbQ?= =?us-ascii?Q?AW/SUbRtiMnvFlwRb2XT1bmHKOTgOH9iN+A5yexi6XGvIPjSlT1whFny9nPY?= =?us-ascii?Q?RvXbNIi9MHXmW7p8B1iys3hSefEhCudB4DDRVr0NwxeLD9XlaYBM1mdJ+Fg1?= =?us-ascii?Q?91v5cJI1yIQGnF+bDhJywcR0+Z8+K5SHP6GVjuuu8+m1UYp3ICA6cEib9a9U?= =?us-ascii?Q?RJDBr3vhqwKx/rJ9n7zmSEmi/c4ad+ogpbf7A/mD8LJmUhhgfcc6DwK5AOEa?= =?us-ascii?Q?/S/XrEUjRaJ/dVzXOj80BKUBfFxJF+gO9hAEaRrCz89IWrE6KVy1vMql7ovt?= =?us-ascii?Q?uDe3fPFCUrKdNdHLywuTJGPkdDvW2ZYiMJa1uT35gP+x6SoyXdOdLoiWIFKv?= =?us-ascii?Q?knU9KUzIezS7Bd+2oihqCPjD5qSFirGmf1NSpQONFLyrrbxBFDT4aC0OotwQ?= =?us-ascii?Q?4ZiY0JB7YtXjYIPnUA/RHjWBNISFMKorqTdITt2SNG8H0P5jq/pq34GeKLT0?= =?us-ascii?Q?xhaJSLraGsw7um02AoMTWnMHXuBTy+pfZjNYJNth/opsGQiQAdy/57zbgmFC?= =?us-ascii?Q?E1RyM2NDYQ3n72ilPs/qZn6nxOGzF3BVm3fWr46LJNgghf18K3kZsdIQ5onc?= =?us-ascii?Q?YL+K1hBKIPbBjqwENbtGDMSjaWC7Rnl22Ip8qga5n0nbzP6xpNgNDdi586tu?= =?us-ascii?Q?dsi7PqfpDaKWdSVSTCFRRborACMQVdKnIZKIxyUNCn8y4k6nmiSXm8OKaTlP?= =?us-ascii?Q?55VH4PU8k1imZrLLPTUIkgfyhWVlXVG3tqVFGlqZO5s8UTu+DI5SnhOg4ZSn?= =?us-ascii?Q?OZtliSCThX7I3es7q0y0AC3Q7rtsLDbi981yry7JvyL9aFAuN3ReV3jbRFc9?= =?us-ascii?Q?rtLdvHqP1VurYH9LU1Y7V20g4Iv0Vh7Ai1PENI4LTOlGjoH9AjVORUvvrKxK?= =?us-ascii?Q?RHbe+Z5JNw8+rKgDzm86QidAW5usiiGy8o78fStJ3/AfB8bfDi/QexZ+p3ul?= =?us-ascii?Q?1a9caMf25geM/iQClxotCA8GjoqwtncuNXrYXGapjBvoV5qJWvlo7iSHWhxv?= =?us-ascii?Q?hXW5JNQbhxqov8EUKfy/3iPZzTi5l2j2HRbPF403hxP26FJ1mtMOQKVtepH8?= =?us-ascii?Q?9lrsAu0ZUSPYy4kD75oHdv8sAvUWZS+/tfogXhqaFW5Z25CdLNXH?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 865022a0-2bdd-4ad9-ff55-08debfc17426 X-MS-Exchange-CrossTenant-AuthSource: ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2026 09:37:53.2813 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FJ7l/E6xGyKe/T65zM/aHihdsM+h5q75tXolDCTFuzvmAKKIJBode6m4z1hkf68Z2KRYg/bA8KCTwAKEX+F36h2boCEjKGrfLrc1Pk5ZcrG8x1/wxg/1sojxe1UbCJQA X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ0PR01MB0982 Content-Type: text/plain; charset="utf-8" From: Lianfeng Ouyang - Drop "starfive,jh8100-trng" since JH8100 SoC is no longer supported - Add "starfive,jhb100-trng" for the JHB100 SoC TRNG. - Update maintainer to current owner Signed-off-by: Lianfeng Ouyang Acked-by: Conor Dooley --- .../devicetree/bindings/rng/starfive,jh7110-trng.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/rng/starfive,jh7110-trng.yam= l b/Documentation/devicetree/bindings/rng/starfive,jh7110-trng.yaml index 4639247e9e51..d21769b7d54e 100644 --- a/Documentation/devicetree/bindings/rng/starfive,jh7110-trng.yaml +++ b/Documentation/devicetree/bindings/rng/starfive,jh7110-trng.yaml @@ -7,15 +7,13 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# title: StarFive SoC TRNG Module =20 maintainers: - - Jia Jie Ho + - Lianfeng Ouyang =20 properties: compatible: - oneOf: - - items: - - const: starfive,jh8100-trng - - const: starfive,jh7110-trng - - const: starfive,jh7110-trng + enum: + - starfive,jh7110-trng + - starfive,jhb100-trng =20 reg: maxItems: 1 --=20 2.43.0 From nobody Mon Jun 8 06:36:22 2026 Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2107.outbound.protection.partner.outlook.cn [139.219.146.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ECE2D39185C; Mon, 1 Jun 2026 09:38:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=139.219.146.107 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780306692; cv=fail; b=Q087JMrk9r6al/cmsDeS0ygbXNR9sQNPPq03sWV9fBRiV1FOcjTpDOzB5Ufg+6jJ2rCyt0YczsUuykBaG5K6HKrdUf38Z7WvJrztrSzGrQHtGNpAdic13QMXa0R5Mz2/Mpb+IDGKZpGVCxG/r+g173AsFKjB8Anrbqw1Qrvamtg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780306692; c=relaxed/simple; bh=5WtVN2FnGSBDje4Z1v0urY1KCH9o0j6PJkic/9YcgVs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=qAZWLsG8JHheeti+i8tkMsaTXfowsOUvHS0kFugXWF202/6AIHHcqrNoeem1c3F9cvNjihk6+boJjM0lIU6VZ90zttu7rcawUE6LTB78hFbJeHC25AGsXY+M6IK0Zn8qWff2uI5z+8D0pGevACz9GvMzgKUQlsimk7dkPCXZths= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com; spf=pass smtp.mailfrom=starfivetech.com; arc=fail smtp.client-ip=139.219.146.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E7zIuFtwqoKIY+fOwc8Id39DdH8ctlPIzqMdUtlcXfp3mdgHOJ5C+ZPWZ2j5z9SthGwWDFTuy1r5hO6v4p2tY/5kDtjln26DWfIzC8K4gpAVTomCfC7DFzl2mW3pKWVzeKj5TgEjdncfD059/9CtyXwfQQ68MVo/e04C4vKb0M6lCRgQQtF+IXO0fdENVePoTcHsBVyAuCGmeq0e2bOQy9jC4sG/b7BWNP3sI8fnIYDBlUyeahm3vj8W14ymU413RpU5F5a6RFexPxrl6a4Em/ajm2Ru+XIrxKftqNE5E97/5my69NruuUwSLn/zWP2EUZyOUX+TZYZ1y7CYIeQMyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=IBlSbVlpW/1/A+wpx0z+S4l4TebOQCVsaMaVf71ba7A=; b=ndi0bc4+VuvokP7FoEBPdukFy4DeAGmac5Zldjlo/K7MPw5ufLJckQomcCnWg6cAIlN0qvK1+yJI3wnVmz+G6XVoIOILU9SjdRdfYq4yX1aBk8RyaLCr4bEEJ4Iyai99WGb3HrNo84TmuEOY/mSf+pq7uSmEU1oVHDZnrgR6ylO1iRrZTJJnFXu90p6wPZtLhkdyQzgbPFlXTkJ14r7pLGb+0ZmrLRrYuXjr6//89KtpnziOLVltmY6BBf8b65s61UOhpR/nICQ75o2vwS+ACm85bPH+xCtz7dyvw2g7MrxQIN7hFze7/px1pJv/Qrom4fMBmt0CSUrz/vmcwzExzA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:18::6) by ZQ0PR01MB1254.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:1c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.18; Mon, 1 Jun 2026 09:37:54 +0000 Received: from ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn ([fe80::973:272c:ab11:7570]) by ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn ([fe80::973:272c:ab11:7570%6]) with mapi id 15.21.0071.017; Mon, 1 Jun 2026 09:37:54 +0000 From: "lianfeng.ouyang" To: Olivia Mackall , Herbert Xu , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Lianfeng Ouyang Subject: [PATCH v3 2/2] hwrng: starfive: rework clk/reset teardown order for JHB100 & fix RPM Date: Mon, 1 Jun 2026 17:37:44 +0800 Message-Id: <20260601093744.84210-3-lianfeng.ouyang@starfivetech.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260601093744.84210-1-lianfeng.ouyang@starfivetech.com> References: <20260601093744.84210-1-lianfeng.ouyang@starfivetech.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SH0PR01CA0009.CHNPR01.prod.partner.outlook.cn (2406:e500:c311:5::21) To ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:18::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ0PR01MB1269:EE_|ZQ0PR01MB1254:EE_ X-MS-Office365-Filtering-Correlation-Id: 932aa9e7-f7e0-4265-4248-08debfc174b3 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|366016|1800799024|376014|38350700014|56012099006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: nms389a48jUvcESXSUClPOTuweBpcDAqZdflg928CWDA4zTI559HgAPK8/E8DZ98Cr2X2DE227alhV6ksZ/wJR0Nc8S95O/f7ccIb3sJFAXxx4gwWuwrvMrVA6F9sCQbmUjJmp98a0AC2ZUJBWuZmQuO1rmouV+lb5g8CBoePhqwg89PyCqTDa3jKtn9kweJt6JTcWa3k+UhdqC9g6uIRuyKqGaTCQj34y1JP5k3fhYb6NpSdS12zdmkKdRBQ6aMk/6ndyTm9m/ykR5wd5Fgpgv7DUCQvH+TpwCjGshPXkRXADzOjMXiXJjgICqNQfIPhfKxmQw51Np3z6YkhlenGgmqO4QnpCGGUc3HH17fnCkv3YL1tnsE9h8F3YkiFBo9HpUrM0U1Mx2MjFMYigIydve0kq+hCbob0jSsKgB/1pWs5vP41WsAEW8qbZMtGKM6KPLCGsSOYwdBWyxE6skm5bOnqpHoHgBTbW4sUm+SQn4TaYq94marZ5F38IBZkussXt6oGZuXk3VCETTjtzi0n5BJj+KOJinHgfGUqelyH+t+1GlhhaInQk5PuzzQQcue X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230040)(52116014)(366016)(1800799024)(376014)(38350700014)(56012099006)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+IoPVLW88OOklvmGjla+nYL1OKUuvZq6KPYS6dOQaoje9NhzXD8b0ah+uzyD?= =?us-ascii?Q?mQO/oGO+QU3KlTNEemNvee32eRRhdJXHBW+mBgScGej51mkULYUeGc2tEeCk?= =?us-ascii?Q?Azp91lbXYXnbmI36qBy/NQ++IIHd4Mx56rAECRFYX1cT9rBI9MPIgearkv2J?= =?us-ascii?Q?est3B0/5kMo0looG1ynMIPHnpGCxK50oFxXOlv2ZUGZy64pHS2zjA/vBjqE1?= =?us-ascii?Q?7IfAlHmzojWgvbITgDeGsmvaukuN1AyOl1dcjJ2zGvlgtxx38v/yt6SjXQlQ?= =?us-ascii?Q?CTCfLG0D9IHxukIPLPWdLSUQagxW0hvPl6ft2KUyfYPO0ozn3C73D0I9r6eu?= =?us-ascii?Q?AkcYggoD5YYWy5UoBzD68uWQVid7RCdphAXE8RbojdCeJrqsFr0vViGJcGNt?= =?us-ascii?Q?/r8v8v+XKp04sK6yRCp0KE6nu6LoQcBQAZSM4/A4drbzbdmChLd+i9ooR9A5?= =?us-ascii?Q?amxE2GXH1hgpZFAGsOEZdaQyrKhD35jMEq2TSv4vtMCUC1kPXhukHLwLRZEE?= =?us-ascii?Q?vgt8s1f1PZ8U1O3YnUcFQgB5/9zxg5WJNPa+RiHn1RTihUhziqKxrq4KJq1S?= =?us-ascii?Q?dq1EWFzyac8kVkQVi2/XUrHn+u3Xhj8hXh3eYUdWMgkVw0whdlecn4AVvTrt?= =?us-ascii?Q?DIlFg99+nQ4rPbeOp8LEtdGsWlQlq3U2uKs6nywU9npPAAK1KJmh13Y0G/TF?= =?us-ascii?Q?ZZjgdATKmsGJTUgYDPafSb1Ub9hU6diSgl8xnWO6TWEGj+/43yDmejVtsdKo?= =?us-ascii?Q?N6CuVkcrcMYumd9BpLL8udBNyLvD09xsjNRykAbfhbi0X4AvuD040K2t0TBY?= =?us-ascii?Q?3NyffoCBY45sOVe4uwih8PqXBbTU8v8NOUHw/o0GzImuFl0E8y0ulwOe3Dhg?= =?us-ascii?Q?URyP6JZvj61fPGxPiUOslL8u7xDP1d8Fg0ys/1p4VZEkIc17uIUkojeokRcZ?= =?us-ascii?Q?2HjMaORo4FxVbFLaKG9ckZUhXHRkEUkHThomok49ZNtCKhSTKBf2LCfjSoln?= =?us-ascii?Q?0ZReBL815D5zCPA5HShk5BQQ3AhJA/hwa6Wt+hfcb6njjhjzTlJUTbpHcYB6?= =?us-ascii?Q?sjShE6sg+jq5XJKIRcgXKQrQqZwru9Wg2F4aah0Qwz3y5yJXmMFZoWKIAa98?= =?us-ascii?Q?GGpNktFTqPKvhUvGBX6lPkeqjbU2QEVEz3tHO8KIUOOD7iL2ZO2iPzbS0i7q?= =?us-ascii?Q?Cc1F7dqiZ6z/m80Ea8GbFkqt8dilQzxBdhs855hcNtXleTk80f6uZuKUo4V7?= =?us-ascii?Q?H5P2OHTvj/0ioZ0Tjn+MEK4OyqoKHfyCdeAnQ3K/KwV4LQ43cH7KZYc60Okv?= =?us-ascii?Q?espFMm97tNWyKYjT41aPDPdItRgb+ah3gfdzAdbc46q5p42c73Q4dW69JUff?= =?us-ascii?Q?Gsnos+5kmZRhaXvxdope8o3K4+e/9BrIvUPPA59RKTkRjCFpaKvunPXi8wK+?= =?us-ascii?Q?sy6c3XaoausLuotJ/05IMMzN7qbVvTNAOIgSmEe1FI7F5k1Q8/ykNhIxo2xt?= =?us-ascii?Q?jvFcx9A71VorJ6qIMlQnM6DtacrydnVTL4RGo0HosKmfQKr8Kfpqr2bxgA+k?= =?us-ascii?Q?WswCZl2VcQfwqZVb9yN7nBSd3XfyATJppapEj6vv2ibPSkBlK+2xzaiXe9dt?= =?us-ascii?Q?UhdqhoGr90DCe8aPtpuy5yWPeV0AG5g1xdi+afW6MGqvgj5b5LPd8Ad4H/wk?= =?us-ascii?Q?GP+yadVgUzM+7nNg/syd0uBXc2yvU2rxJAlNXwyCYXzACtg+YfgIj03blGba?= =?us-ascii?Q?7EfaWmnBmGwDNs12ID4lSx4Pf74sdMiPNSd7BI54T08O2VZ80gl1?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 932aa9e7-f7e0-4265-4248-08debfc174b3 X-MS-Exchange-CrossTenant-AuthSource: ZQ0PR01MB1269.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2026 09:37:54.1725 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oYFy6Rel2mMu0tmOnz3zjc4+q6u5JFD03U2Vqgq3IIDcixlcddhWpAzKhiRHZ34nBlZxD1pVTS9VaaF0OAon7I1VC3s29zLBcpIUVh2Jzjba7U8+eWWERaIZD5SY/hbF X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ0PR01MB1254 Content-Type: text/plain; charset="utf-8" From: Lianfeng Ouyang JHB100: to avoid RDC glitch, assert reset only after clocks are gated. Introduce a per-compatible seq_rst_clk flag (RST_FIRST/CLK_FIRST) selected via of_device_get_match_data(). RPM fixes: - Mark device RPM_ACTIVE in probe after clocks & reset deassert, before pm_runtime_enable(), so usage count can eventually drop to 0 and autosuspend actually triggers. - Balance pm_runtime_get/put in init/read/cleanup, and reject register access when RPM resume fails. - Move low-level disable/reset into a devm action (starfive_trng_release()) so error-path unwind order is correct. Signed-off-by: Lianfeng Ouyang --- MAINTAINERS | 2 +- drivers/char/hw_random/jh7110-trng.c | 191 +++++++++++++++++++++------ 2 files changed, 148 insertions(+), 45 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index d3a6b3f6b6a0..729b20ecc697 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -25280,7 +25280,7 @@ F: Documentation/devicetree/bindings/perf/starfive,= jh8100-starlink-pmu.yaml F: drivers/perf/starfive_starlink_pmu.c =20 STARFIVE TRNG DRIVER -M: Jia Jie Ho +M: Lianfeng Ouyang S: Supported F: Documentation/devicetree/bindings/rng/starfive* F: drivers/char/hw_random/jh7110-trng.c diff --git a/drivers/char/hw_random/jh7110-trng.c b/drivers/char/hw_random/= jh7110-trng.c index 9776f4daa044..9c164a0011ae 100644 --- a/drivers/char/hw_random/jh7110-trng.c +++ b/drivers/char/hw_random/jh7110-trng.c @@ -92,20 +92,36 @@ enum mode { PRNG_256BIT, }; =20 +/* + * For JHB100, assert reset after disabling clocks to avoid + * reset-domain crossing (RDC) induced glitches that can affect + * downstream IPs. + */ +enum seq_rst_clk { + SEQ_RST_FIRST, + SEQ_CLK_FIRST, +}; + +struct starfive_trng_data { + enum seq_rst_clk seq_rst_clk; +}; + struct starfive_trng { - struct device *dev; - void __iomem *base; - struct clk *hclk; - struct clk *ahb; - struct reset_control *rst; - struct hwrng rng; - struct completion random_done; - struct completion reseed_done; - u32 mode; - u32 mission; - u32 reseed; - /* protects against concurrent write to ctrl register */ - spinlock_t write_lock; + struct device *dev; + void __iomem *base; + int irq; + struct clk *hclk; + struct clk *ahb; + struct reset_control *rst; + struct hwrng rng; + struct completion random_done; + struct completion reseed_done; + const struct starfive_trng_data *data; + u32 mode; + u32 mission; + u32 reseed; + struct mutex lock; /* protect trng cmd seq */ + spinlock_t write_lock; /* protects register access seq */ }; =20 static u16 autoreq; @@ -130,7 +146,7 @@ static inline int starfive_trng_wait_idle(struct starfi= ve_trng *trng) 10, 100000); } =20 -static inline void starfive_trng_irq_mask_clear(struct starfive_trng *trng) +static inline void starfive_trng_irq_clear(struct starfive_trng *trng) { /* clear register: ISTAT */ u32 data =3D readl(trng->base + STARFIVE_ISTAT); @@ -138,6 +154,31 @@ static inline void starfive_trng_irq_mask_clear(struct= starfive_trng *trng) writel(data, trng->base + STARFIVE_ISTAT); } =20 +static void starfive_trng_release(void *data) +{ + struct starfive_trng *trng =3D data; + + if (!pm_runtime_status_suspended(trng->dev)) { + writel(0, trng->base + STARFIVE_IE); + starfive_trng_irq_clear(trng); + + if (trng->irq >=3D 0) + synchronize_irq(trng->irq); + + if (trng->data->seq_rst_clk =3D=3D SEQ_RST_FIRST) + reset_control_assert(trng->rst); + + clk_disable_unprepare(trng->ahb); + clk_disable_unprepare(trng->hclk); + + if (trng->data->seq_rst_clk =3D=3D SEQ_CLK_FIRST) + reset_control_assert(trng->rst); + } + + pm_runtime_dont_use_autosuspend(trng->dev); + pm_runtime_disable(trng->dev); +} + static int starfive_trng_cmd(struct starfive_trng *trng, u32 cmd, bool wai= t) { int wait_time =3D 1000; @@ -174,13 +215,22 @@ static int starfive_trng_init(struct hwrng *rng) { struct starfive_trng *trng =3D to_trng(rng); u32 mode, intr =3D 0; + int ret; + + ret =3D pm_runtime_resume_and_get(trng->dev); + if (ret < 0) { + dev_warn(trng->dev, "Failed to wake device for init: %d\n", ret); + return ret; + } + + mutex_lock(&trng->lock); =20 /* setup Auto Request/Age register */ writel(autoage, trng->base + STARFIVE_AUTO_AGE); writel(autoreq, trng->base + STARFIVE_AUTO_RQSTS); =20 /* clear register: ISTAT */ - starfive_trng_irq_mask_clear(trng); + starfive_trng_irq_clear(trng); =20 intr |=3D STARFIVE_IE_ALL; writel(intr, trng->base + STARFIVE_IE); @@ -201,7 +251,13 @@ static int starfive_trng_init(struct hwrng *rng) =20 writel(mode, trng->base + STARFIVE_MODE); =20 - return starfive_trng_cmd(trng, STARFIVE_CTRL_EXEC_RANDRESEED, 1); + ret =3D starfive_trng_cmd(trng, STARFIVE_CTRL_EXEC_RANDRESEED, 1); + + mutex_unlock(&trng->lock); + + pm_runtime_put_autosuspend(trng->dev); + + return ret; } =20 static irqreturn_t starfive_trng_irq(int irq, void *priv) @@ -209,16 +265,17 @@ static irqreturn_t starfive_trng_irq(int irq, void *p= riv) u32 status; struct starfive_trng *trng =3D (struct starfive_trng *)priv; =20 + if (!pm_runtime_get_if_active(trng->dev)) { + dev_err_ratelimited(trng->dev, "pm is inactive in irq\n"); + return IRQ_NONE; + } + status =3D readl(trng->base + STARFIVE_ISTAT); - if (status & STARFIVE_ISTAT_RAND_RDY) { + if (status & STARFIVE_ISTAT_RAND_RDY) writel(STARFIVE_ISTAT_RAND_RDY, trng->base + STARFIVE_ISTAT); - complete(&trng->random_done); - } =20 - if (status & STARFIVE_ISTAT_SEED_DONE) { + if (status & STARFIVE_ISTAT_SEED_DONE) writel(STARFIVE_ISTAT_SEED_DONE, trng->base + STARFIVE_ISTAT); - complete(&trng->reseed_done); - } =20 if (status & STARFIVE_ISTAT_LFSR_LOCKUP) { writel(STARFIVE_ISTAT_LFSR_LOCKUP, trng->base + STARFIVE_ISTAT); @@ -228,18 +285,37 @@ static irqreturn_t starfive_trng_irq(int irq, void *p= riv) spin_unlock(&trng->write_lock); } =20 + if (status & STARFIVE_ISTAT_RAND_RDY) + complete(&trng->random_done); + + if (status & STARFIVE_ISTAT_SEED_DONE) + complete(&trng->reseed_done); + + pm_runtime_put_noidle(trng->dev); + return IRQ_HANDLED; } =20 static void starfive_trng_cleanup(struct hwrng *rng) { struct starfive_trng *trng =3D to_trng(rng); + int ret; + + ret =3D pm_runtime_resume_and_get(trng->dev); + if (ret < 0) { + dev_warn(trng->dev, "Failed to wake device for cleanup: %d\n", ret); + return; + } + + writel(0, trng->base + STARFIVE_IE); + starfive_trng_irq_clear(trng); + + if (trng->irq >=3D 0) + synchronize_irq(trng->irq); =20 writel(0, trng->base + STARFIVE_CTRL); =20 - reset_control_assert(trng->rst); - clk_disable_unprepare(trng->hclk); - clk_disable_unprepare(trng->ahb); + pm_runtime_put_sync(trng->dev); } =20 static int starfive_trng_read(struct hwrng *rng, void *buf, size_t max, bo= ol wait) @@ -247,7 +323,13 @@ static int starfive_trng_read(struct hwrng *rng, void = *buf, size_t max, bool wai struct starfive_trng *trng =3D to_trng(rng); int ret; =20 - pm_runtime_get_sync(trng->dev); + ret =3D pm_runtime_resume_and_get(trng->dev); + if (ret < 0) { + dev_warn(trng->dev, "Failed to wake device for read: %d\n", ret); + return ret; + } + + mutex_lock(&trng->lock); =20 if (trng->mode =3D=3D PRNG_256BIT) max =3D min_t(size_t, max, (STARFIVE_RAND_LEN * 8)); @@ -257,24 +339,28 @@ static int starfive_trng_read(struct hwrng *rng, void= *buf, size_t max, bool wai if (wait) { ret =3D starfive_trng_wait_idle(trng); if (ret) - return -ETIMEDOUT; + goto end; } =20 ret =3D starfive_trng_cmd(trng, STARFIVE_CTRL_GENE_RANDNUM, wait); if (ret) - return ret; + goto end; =20 memcpy_fromio(buf, trng->base + STARFIVE_RAND0, max); =20 - pm_runtime_put_sync_autosuspend(trng->dev); + ret =3D max; + +end: + mutex_unlock(&trng->lock); =20 - return max; + pm_runtime_put_autosuspend(trng->dev); + + return ret; } =20 static int starfive_trng_probe(struct platform_device *pdev) { int ret; - int irq; struct starfive_trng *trng; =20 trng =3D devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); @@ -282,22 +368,32 @@ static int starfive_trng_probe(struct platform_device= *pdev) return -ENOMEM; =20 platform_set_drvdata(pdev, trng); + trng->dev =3D &pdev->dev; + trng->data =3D of_device_get_match_data(&pdev->dev); + if (!trng->data) + return -EINVAL; + + if (trng->data->seq_rst_clk !=3D SEQ_RST_FIRST && trng->data->seq_rst_clk= !=3D SEQ_CLK_FIRST) { + dev_err(&pdev->dev, "Unknown seq_rst_clk value\n"); + return -EINVAL; + } =20 trng->base =3D devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(trng->base)) return dev_err_probe(&pdev->dev, PTR_ERR(trng->base), "Error remapping memory for platform device.\n"); =20 - irq =3D platform_get_irq(pdev, 0); - if (irq < 0) - return irq; + trng->irq =3D platform_get_irq(pdev, 0); + if (trng->irq < 0) + return trng->irq; =20 init_completion(&trng->random_done); init_completion(&trng->reseed_done); + mutex_init(&trng->lock); spin_lock_init(&trng->write_lock); =20 - ret =3D devm_request_irq(&pdev->dev, irq, starfive_trng_irq, 0, pdev->nam= e, + ret =3D devm_request_irq(&pdev->dev, trng->irq, starfive_trng_irq, 0, pde= v->name, (void *)trng); if (ret) return dev_err_probe(&pdev->dev, ret, @@ -333,18 +429,16 @@ static int starfive_trng_probe(struct platform_device= *pdev) =20 pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, 100); + pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); =20 - ret =3D devm_hwrng_register(&pdev->dev, &trng->rng); - if (ret) { - pm_runtime_disable(&pdev->dev); - - reset_control_assert(trng->rst); - clk_disable_unprepare(trng->ahb); - clk_disable_unprepare(trng->hclk); + ret =3D devm_add_action_or_reset(&pdev->dev, starfive_trng_release, trng); + if (ret) + return ret; =20 + ret =3D devm_hwrng_register(&pdev->dev, &trng->rng); + if (ret) return dev_err_probe(&pdev->dev, ret, "Failed to register hwrng\n"); - } =20 return 0; } @@ -376,8 +470,17 @@ static const struct dev_pm_ops starfive_trng_pm_ops = =3D { starfive_trng_resume, NULL) }; =20 +static const struct starfive_trng_data jh7110_data =3D { + .seq_rst_clk =3D SEQ_RST_FIRST, +}; + +static const struct starfive_trng_data jhb100_data =3D { + .seq_rst_clk =3D SEQ_CLK_FIRST, +}; + static const struct of_device_id trng_dt_ids[] __maybe_unused =3D { - { .compatible =3D "starfive,jh7110-trng" }, + { .compatible =3D "starfive,jh7110-trng", .data =3D &jh7110_data }, + { .compatible =3D "starfive,jhb100-trng", .data =3D &jhb100_data }, { } }; MODULE_DEVICE_TABLE(of, trng_dt_ids); --=20 2.43.0