From patchwork Mon Mar 18 03:06:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ziv Xu X-Patchwork-Id: 13594964 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DF2F6C54E67 for ; Mon, 18 Mar 2024 03:07:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3AtEK2LFXl4KuFDt+j1zQNTe/hY0iG4Qotqafn88+pA=; b=pUkPfZxZGDjHp9 FdiedUe4/A03FEzKMtzkSwoC5sp5LizP/M0XfBfRZeC9MgYps0LW6Txyd35sp5eFJHei/5TnuSiQm X0AQvuxlARMoRsORXzrOUc1iuv5jWxNSV+dEaGnVC/Vu34N79kf2ZVeytZn0FXdfdZAPjHxPmDvIU 51bZFW6nypRt6DJIjdV0N4w19tXl0vWnT+LzaJiQGuJ0IsYbwLgBP6gia49gc8ck6T0IroDvMoW9A CaBf1FLpOspBgYWhUSv7tRdqgOdwqay5dnc7hmyDTTkEDQ189yyqqfTRPGYL5p+83xX4ICASTTkS6 WoOTpl0NydtLoSUajHZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LH-000000076hG-22ZL; Mon, 18 Mar 2024 03:07:15 +0000 Received: from mail-sh0chn02on20706.outbound.protection.partner.outlook.cn ([2406:e500:4420:2::706] helo=CHN02-SH0-obe.outbound.protection.partner.outlook.cn) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LD-000000076dT-0ait for linux-riscv@lists.infradead.org; Mon, 18 Mar 2024 03:07:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LnXsTiOo2ezdA2PlGyu2X5NUkmNUUGcP1W7E6pwPydlOyLRHIRBDgMZLCCEIKVjVUQbPO7R3nRQ1ylRtjYfeqNyqVEdnhsQIp9ouS8FL9y327lKGBnmenMh272CcJvLgQ3/Zzts4y+Xgn/CGvH/CZCWOoRnDvwzCXkTPPJ6LNE64TpYRTMVvk1WX1Z5MZilOb8nLYjvCxrvHaLiwZE6fFLex8gIfKQ1rusU9xvgwPBHaQUZtM10052hX/cVSxyQu/3y1oz9yE3jKMEr8A84CP+PyOpbvw12Ah1IXlEQDHrp+WjkDRGwFn8TfgEfLx1HZ68MhsBlAykuuNRruU+fKXg== 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=CpqvJdZvPmycFfRZZCCSg4FFhQ3bjyafbiyaP+KjlYQ=; b=OsGxXzHRlRvpdiQpDu4FGgih6qQmG8dvQJlhu5SAkOQldOWpoSF7XW+Tb7s/gZ5H1FC8F1TmxadBzuMT3P2X2xTaWjCG5aCOneIAJt/eqlIpptSu979rbaS0JUxbYvlE0H2fSJ5kpKN3SOkbt//1NiQLhQBZx7P6hhhAkLb6G/Kvo41usJjISapjKN+IT+yYqZo4z02P4q9qqRBwGdIuNCZLNOIWa7qldkXvTfRm/ycnQRcHKf/zEmxf5KS8KOmeOkwKdIinPXyi4BMSjlTaKIwd336VlQ9GGMWHVZqPIz4cSU+09iAjDbCs8PV01iH3j+mgXpQR2RlqUcJSyexQJg== 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 NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) by NTZPR01MB1083.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.20; Mon, 18 Mar 2024 03:06:56 +0000 Received: from NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880]) by NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880%6]) with mapi id 15.20.7386.016; Mon, 18 Mar 2024 03:06:56 +0000 From: Ziv Xu To: Daniel Lezcano , Thomas Gleixner , Emil Renner Berthing , Christophe JAILLET Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Philipp Zabel , Walker Chen , Xingyu Wu , linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v9 1/3] dt-bindings: timer: Add timer for StarFive JH7110 SoC Date: Mon, 18 Mar 2024 11:06:47 +0800 Message-Id: <20240318030649.10413-2-ziv.xu@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240318030649.10413-1-ziv.xu@starfivetech.com> References: <20240318030649.10413-1-ziv.xu@starfivetech.com> X-ClientProxiedBy: NT0PR01CA0018.CHNPR01.prod.partner.outlook.cn (2406:e500:c510::11) To NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: NTZPR01MB0986:EE_|NTZPR01MB1083:EE_ X-MS-Office365-Filtering-Correlation-Id: b79efe5e-768b-4888-dc36-08dc46f87858 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: S6NpkCzQP64e8bn+V+0f2cRAau8iNrk+rQv7zH7t2EnBhSiiAaGF92MhM6X+qc89MoxDVzwYdiOdINHj0DbrGC7Z8QwWr36kRQFQNgQ8Qc7UgsmONNYFQfftkFhYqAVdeNq4v46Pgs+kstMAq2HhQPxFhZeziFm8WlTlnHBZzJCXFuhaDWyQx+ttLbBbWbCz+7y0rZWJ1xT3cfcFD3LH6UidTalA3RWYoKjpQB3eZ14hy+kyjb1mJ0CL/CCoY2yIToxZQbX+f7KnlxJa1vXX4t1xDZpiM3RzXJuU/s+hD4/sgqzZnOiKHj31X9VXDMpwmrc844HQCyr2nLQcBefZd2vXQ+50bAkWofIg9RpAJpm0YC8z5wTvOZ0aIG1nWpsI1YSOrfGqyzqZNdGa0I9e5YQYQ4hguTaoSGGMPFXdTs5CqW/OfU+xhRxfdLr9mMhdg6DnOcsPIJSFJYe6RE2DH60b+RJhlUpAFJ5AL+cp9VNYZ9dvIvc4sx1TJ8LNdM7kGf41lV4eDncag7WOGudwVkmDOX1i0iFBTJLyDKHY5/a8JryePtbMBOXW5zrY43uaQVNBOa9P06upc0U20oeC+a8KfpNuWC3YC7j7JXDq1YmJqz58aN5r+YiBqXzyUD3S X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 189M09UIMfzwgKICvBGDhGP3lb1gdfeyBijkQUauy5pCHJ7bu/39VsOGgbVEF0RUnnQuxSkMi6QJ6doKY/iCZalQftTu+hy50YJh6zptGUQ4zDhiSXap/xE+6Aj0IW9s73Ya5/RUos1H92FPmzjZeAYPhg7hQ2EuWTdj22AcscTbsyxgYZh74vOFTDNb/DIYxgQjskdlapbzb0vOE9KHyed6BXaqZdDtVJJTYm6sZYL26PcC+gM5JZCZzPli0dad2QyHIFbCpcT+GumgTPFMvLEO+QrZINZ19MF6lFbPphzPyJk2KJY+HOtOkFPACpcuHBBGtysHo52SXYn/yLdbddadqed9cKEZPtYDbJxHYEWNHjlvnDoP9DO83PH8jy7Bvxy80OWJXDFpwu2wjBU4q0H3L/qq/zPK15acNWd8cxrUSttvN+e+dWiHL7vcqruJIZV7LkdcuvvZjkJ9pI4StWYIBFh6sh/4576N4lgBuXa6LP1yIDbd9LZa5F7GfSrGPoYaRuC+7WkHP4AKD/OV+5He+Jj51y5rXXfQR/EUvQ4T+rrEnuNlQEXYQSWCNWgJ9oaWFbZzG5CrgjXBomD0hZGgT2Wla9JfqI7141Up/DJAgkFMGymcZrEe7V0R4OgCC0L/LF0hzW1BKjmkMnNJVkxc1JSpJzqpFPh+89Gr8kcmgH4EnfCJiwNFpDjrI1KgkbcQQWmf94zQ5lT1EWyBKnZ0wWuttbceKl2cQKz62dClObfc6ksRBlP6Jca2stTyO9SWWqebAEJgRBwYEXiGuJXs50+iU5q5gp2YihR2l667QsMMBZszUqMkMS2qAd99dUVfYPUuVimX8S1AgDxJcB9d6/pXQdVV9pmoX4YaRCZSkiPwx592HYH2c7tiwEoQqiww2Jw3mQqPKSHqr2tGzqicbZEsE+SnhebmAbZPzcOeS163IvzfHMNEwe6ZEkxs5vKYZGziHbdHogtyuqoj9G2/WXA67f9KaZloSUwiugCNa+PuWd2t8NK/YlBmKPxG6Hxbkoq7r3p0oEL7VYb6F8q95TUkmbpiJjMnmFJbenHBPBE5B3Z/mJMqyWmMEALmNox/IXniaZAgP1gJT+/gRR6VPxk5+u5Dj1HXOBOSMPzeqJRHCcrM6ezhFGYvCVADys+mxu6e8Y2SQNeUezkb8r5yO2I7h4s2fx+IO08jVQB1YGfwdiIZjRL1MLSrwVTeN9AJI2ywC07IsXcPyokfAJxlZILnwEo7jTlKp+6BCHNuOVaRJfWrffPUe95A2p43o1HK1gigLfgPUO3FmeVqZKGDTwuNt8uEWJ8W/gepE7SHhiyDHxxNSdj9shEmIzixck7Z39BLvTJyzNw1h+e1MY6zTQfR/vjp8BrITLTGa3IoNDS+K9X77xf1rtc7zSH1c6E2j6poaDOiXbMXWViZnwv+Wd+HSIn821Jkv/vY+jJS4uZU0y+fFh1VkgYxIWQTKGFCWBzFRUYvZhY2oL9vjF6EONk9msoj1NrUVyOd4ijMiYJvsQcwQTT90DTJ5ZLxiBFO32BFXpj7h7jMuf8xKmkygb7QhFPZ2/XzYtYv2i1RAIGqS/VKC4aREzHdtWvr X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: b79efe5e-768b-4888-dc36-08dc46f87858 X-MS-Exchange-CrossTenant-AuthSource: NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 03:06:56.5491 (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: lylBdHP/PIh6QPruE3OTqk1MJEYpgZJ7Q1x0AH3t4mIo//PJXhl31gBbMWrpt2MJdIInp5O9bWSDPM5pYJVN+g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: NTZPR01MB1083 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_200711_245242_EC6DFA6A X-CRM114-Status: GOOD ( 11.39 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org From: Xingyu Wu Add bindings for the timer on the JH7110 RISC-V SoC by StarFive Technology Ltd. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Xingyu Wu --- .../bindings/timer/starfive,jh7110-timer.yaml | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml diff --git a/Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml b/Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml new file mode 100644 index 000000000000..9a2dac11eb06 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml @@ -0,0 +1,96 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/timer/starfive,jh7110-timer.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Timer + +maintainers: + - Xingyu Wu + - Samin Guo + +description: + This timer has four free-running 32 bit counters in StarFive JH7110 SoC. + And each channel(counter) triggers an interrupt when timeout. They support + one-shot mode and continuous-run mode. + +properties: + compatible: + const: starfive,jh7110-timer + + reg: + maxItems: 1 + + interrupts: + items: + - description: channel 0 + - description: channel 1 + - description: channel 2 + - description: channel 3 + + clocks: + items: + - description: timer APB + - description: channel 0 + - description: channel 1 + - description: channel 2 + - description: channel 3 + + clock-names: + items: + - const: apb + - const: ch0 + - const: ch1 + - const: ch2 + - const: ch3 + + resets: + items: + - description: timer APB + - description: channel 0 + - description: channel 1 + - description: channel 2 + - description: channel 3 + + reset-names: + items: + - const: apb + - const: ch0 + - const: ch1 + - const: ch2 + - const: ch3 + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - resets + - reset-names + +additionalProperties: false + +examples: + - | + timer@13050000 { + compatible = "starfive,jh7110-timer"; + reg = <0x13050000 0x10000>; + interrupts = <69>, <70>, <71> ,<72>; + clocks = <&clk 124>, + <&clk 125>, + <&clk 126>, + <&clk 127>, + <&clk 128>; + clock-names = "apb", "ch0", "ch1", + "ch2", "ch3"; + resets = <&rst 117>, + <&rst 118>, + <&rst 119>, + <&rst 120>, + <&rst 121>; + reset-names = "apb", "ch0", "ch1", + "ch2", "ch3"; + }; + From patchwork Mon Mar 18 03:06:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ziv Xu X-Patchwork-Id: 13594963 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E85B6C54E72 for ; Mon, 18 Mar 2024 03:07:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jK3QBJ3JtjlzE/FKQmeflCKvI3PZz9QK7/uLpjXQ8go=; b=BN6iDHiq60V+hk ixoLsv1AUrUvlIWbv4R8HSsdSi6MsOiErPCR0hFGe1hqcRzRo2URlLeY2h/cP2Un2G1IZKmV4MNNs sO2AHrvN6iiEEWX2pCFSrEkUDZEugEo1Z11XLzzO8plwhBszwQNsXii/usq4pvscY0zmge+Que+62 zNv/bJYItG7rqZ43eRuokqNI0YpprPtwQtncJTyPndQ5NAQMpVNaKoe79kqkxsAlvSxty6sj5qDg4 fBPr5ORFBSv+b28XbEMslzoOeqdd0d465JjnSX3Z0oO8oFpUjhq7lQgOZP1rnZ4OMGywkDQfOXyJ3 MgZbsihk3hJiqrz+AE1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LL-000000076iY-1KOr; Mon, 18 Mar 2024 03:07:19 +0000 Received: from mail-sh0chn02on20706.outbound.protection.partner.outlook.cn ([2406:e500:4420:2::706] helo=CHN02-SH0-obe.outbound.protection.partner.outlook.cn) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LF-000000076dT-1vgz for linux-riscv@lists.infradead.org; Mon, 18 Mar 2024 03:07:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Izcey+8cFWlthR/WYY6CjXkLTrfqFozfCbHzN5tyZ9Qn/HJJpGRBFiFH2Rrm9LN3T3IV/8wZFVpYYIr3Qoh16axbW3VDBUFPLWJthhri+qJq18QrC883y1BE8SHIeTCqe1KjQjFUwJlca4aFKuRidYBv1Sn8Du4d/rXoOOhiAgfen8SaJ8nUL/A7p4utxkUiuhdoZgSAOn+XKNNrLr65L723vw5zodqYDEM+Lf7Dz+m3s2B8N5hOSDlDvb2vXTkLJc8rJO10SvYR1HSK67SjRT47vGykmooU31ZjK43Ris/yC9Zo083Ogvf8AeYyDpfnJ4yJpK26BXtGWPB1oRK/rQ== 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=M8UDMEgJZ35PNkT3i/bAcb7z0sq8Sfn29xy62LbKFEc=; b=Nl43lDitbUbmn6uCMPHmwfGiI70WntBMyb/WVnCTpGV5Xi2eqfIZoBFXncMK9CCiKQPCAmbdhvBpdqeVP+ELWabM8kiSI4gdgP6rN2ZKI8d6J0ApfPrMOutNymxCsXOzRQSOoCADGnxa+MtJL4uu1t5GhRYzEaFGiw3oRjwEr626BSy9vL2n1sfW8VAxBbLpy9zACT0suJQ26omCTAWz0b3zVn0mcUUyWKr+ID8Nm/E370ZrofPO87hubEOCSt1cgBE62DhDrASi+S6CMmvkuSJwtz/wmQ0E3WbzhtSciGHpZ6n4NNB9xvtH68hPaKbgvlzKZjghVyw6BZrauuvfAQ== 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 NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) by NTZPR01MB1083.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:9::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.20; Mon, 18 Mar 2024 03:06:57 +0000 Received: from NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880]) by NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880%6]) with mapi id 15.20.7386.016; Mon, 18 Mar 2024 03:06:57 +0000 From: Ziv Xu To: Daniel Lezcano , Thomas Gleixner , Emil Renner Berthing , Christophe JAILLET Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Philipp Zabel , Walker Chen , Xingyu Wu , linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v9 2/3] clocksource: Add JH7110 timer driver Date: Mon, 18 Mar 2024 11:06:48 +0800 Message-Id: <20240318030649.10413-3-ziv.xu@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240318030649.10413-1-ziv.xu@starfivetech.com> References: <20240318030649.10413-1-ziv.xu@starfivetech.com> X-ClientProxiedBy: NT0PR01CA0018.CHNPR01.prod.partner.outlook.cn (2406:e500:c510::11) To NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: NTZPR01MB0986:EE_|NTZPR01MB1083:EE_ X-MS-Office365-Filtering-Correlation-Id: e3aa8a4d-a07a-4aee-ea6d-08dc46f878c1 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ppofZb3z4zUcmtA6N5J3pqKvORUsoPxl2KbtVFsVe0oH1hggu7AtfFzvWh4HKaz5VjkZ5yfKbkKx2QgcOZBFWJ+9iCRSwxp0wip6P6r5Ssx9oYgwJekhhgxj1vxS9JA/t+m805Q8dvrr/ATpqetPabeAxa8mzVHZsoQw5DbaV0fZgOqkE2WBv90qBhOmifldl6HLm+fzsqnc3KGI7CrV5r9zx84ssz/MnhcxpGLY8TFXeVpXq3LvJvdVtsHHtlRp7CuZ1jjnHXfkE5ku9+FpzWSPMHmacGkNapO0LEy3CbimISn8z1NUnztp35HQolkj+o5xe6tHUXzasoYCgvCeJXFNa2c51wBfWqDhlm3L8ockuXnFW1plh2MuyADMO9/RHKAeXbiR/Apxtk9msDqRWulimOfr37lpRrQeIlwvII/Hft/iSG4MoBheT3A0QL39TPUeDEC1DzwBn+Xnx6KFk0Qa3p2XkKla8x+QOnQRbPCRffKXKm1XbFm/046OObGy8CnRBj8mhAPproD+qh0djA3qNmba2tGA+pRm48gkiZPH9KGkso6i+dv70S1D+3r0LnkuaN7PoGTe7UuTjkGnSit6F49y/D0xZMv/6zIoJTPvrrCmmgPXX6s20nasH2+u X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +8j/SI/zV465pXidDX1UoyPNSpAcUjCe4gBxjOE2UhsXZttH93POI+mRmaMyZatuxp/H5VYyXyPolI+HPxynfxO62luhgolLq42Nj/NZ3eO6rbH2HOItzjvUurqCCPCJrmLrXatr1Yo5xO8nnQGSAyr+RrhBDvXadM9acs9b0eBDExJd/GswuTcr8TTFXxiv2a2JGC5e8Sg+PPVdg8RV9SFCpf70XlVNHI0q34PQB8YoFT2iZzgYK207RFoVh2pjmmyyV3J3XzZkiWT8BuQ66crDPzRzk1khdTEx4p2ikIVzZbz1LQTdmbTLIdr9+OHBKqIAbDKbpPMv0g2vF4GNT9DX9FU6sBN0gs4rfqqlKtEtFn2aCywMbY/nL7oY/YzWPMVX40TTXD/2q9nnfc1Asy9//1Ht0hJLBBvkYEhd/toIMUisKrl8PMhvcT60kunweAS7MPHbqvGE3b6LJhXiDzEhA2Lf6+4SVuVEkQuYMiTcLBs/6lZM1vk+l8R7oTG6CBvLHclbnT4YS8pJujbMIdcymG0K3MXbRNBioWOdhVItXdRg/QWdxFeSZMkB+iwiTu9AbS6757vJVNCCv1Q/KtzC6d3y7hJwpoQh/HNwv+U0YptXMeJu9ITg8RUFeixHKTQNpGqvoWCCT15vew/g9BzgWOGkGeKyIzJl9eUYo++mhFcqkEqOx6idU/bnUDtLJRo+ju+KwtaCvNMbFtV2V0nI9n3Z1nNK9GmsPZc7SoMESGPontvAofkN9ZhBeXbvvqoRoCf3F7c7aWnPh1Bajw97KG894i4qix5uTgVd/sUmhnhdI87Qy3ffaTr8Vlm1S16WVnHRMUJIGKwBXkbZpZ7nKwjo2Ok7VKzuiVBLlyiQ40yWYG36d3VcboV3oVzGffFcC71tUJVbz5kx7AqHgnRkISj8ynUGQM20AWdGNS8NauT2NF4dXKd2mbgQkvjlZzRQB5YEG7u/wX0NFU5p1RlGo/9cnCyJX/pp/L3tSJnl4tRPGwCjWkcyiIpIZGlYH3lnXsXSE1JWbA5JPxpweUNm5BbLbC3Jfj/9VwXSWmSxmD8bAYcniYDLAp4BzfquYbyyRWQYFVhOnYsRrJy9rmjlEE6s3dIUIBAEdvgpNIhh+WPEhH9MoX8UzRuKZC8mVAcWyub2i88yF3kTtD50ZJZxQWxrkBa8lZjj5B834NIUrTOO/JzHu2TOM5hACT+7VGOCLjQDDm3Kjj+uwCs5rIfdPPbCm6kJTwifkoKTq8iV9TrzetdBUtfsfBhWxSd4962ciaB9y8+FBv9//f/l7XWgbpaZqUMEtnMikCQIUmWOieAv5QUqAv4jvKX19xjgBmPE7g4i1Ea9sQkv0q4mFiZxLw2bJsrd+RGM2wKeGRG3nbgWFEoTJTbVA/Xcs5/00GguUFWA052cM1akfOKFfcvv3kWBNxArANYzjfYsBOMgZwqVIarfgE+wFbVadShlbwAeLgr4NvHUZxb8nAnmHb+hc92+12Gn39Fa+hvXcFEpN5zLu7N1/dlTHhGJJzBA3Ss3uDUblcnD02rX/yPMLxiWFAHF1G1m4VrouV/wSdFL7QNUkaopiUKn2GhLQq8E X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3aa8a4d-a07a-4aee-ea6d-08dc46f878c1 X-MS-Exchange-CrossTenant-AuthSource: NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 03:06:57.2470 (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: gebml7x0ijEYurvGGBbWbFGFIvZCqKiBHdKXDx/d57OTL9+o1rk8cKZoipa0ZUoIEHkRQw8t+Iy1kPQFxA7vPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: NTZPR01MB1083 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_200713_611554_C947747F X-CRM114-Status: GOOD ( 24.89 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org From: Xingyu Wu Add timer driver for the StarFive JH7110 SoC. This timer has four free-running and independent 32-bit counters. Each channel(counter) can trigger an interrupt when timeout even CPU is sleeping. So this timer is used as global timer and register clockevent for each CPU core after riscv-timer registration on the StarFive JH7110 SoC. Signed-off-by: Ziv Xu Signed-off-by: Xingyu Wu --- MAINTAINERS | 7 + drivers/clocksource/Kconfig | 11 + drivers/clocksource/Makefile | 1 + drivers/clocksource/timer-jh7110.c | 345 +++++++++++++++++++++++++++++ include/linux/cpuhotplug.h | 1 + 5 files changed, 365 insertions(+) create mode 100644 drivers/clocksource/timer-jh7110.c diff --git a/MAINTAINERS b/MAINTAINERS index 1aabf1c15bb3..181d3fd714de 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20893,6 +20893,13 @@ S: Maintained F: Documentation/devicetree/bindings/sound/starfive,jh7110-tdm.yaml F: sound/soc/starfive/jh7110_tdm.c +STARFIVE JH7110 TIMER DRIVER +M: Samin Guo +M: Xingyu Wu +S: Supported +F: Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml +F: drivers/clocksource/timer-jh7110.c + STARFIVE JH71X0 CLOCK DRIVERS M: Emil Renner Berthing M: Hal Feng diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig index 34faa0320ece..2dc97201dee1 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig @@ -641,6 +641,17 @@ config RISCV_TIMER is accessed via both the SBI and the rdcycle instruction. This is required for all RISC-V systems. +config STARFIVE_JH7110_TIMER + bool "Timer for the STARFIVE JH7110 SoC" + depends on ARCH_STARFIVE || COMPILE_TEST + select TIMER_OF + select CLKSRC_MMIO + default ARCH_STARFIVE + help + This enables the timer for StarFive JH7110 SoC. On RISC-V platform, + the system has started RISCV_TIMER, but you can also use this timer + which can provide four channels to do a lot more things on JH7110 SoC. + config CLINT_TIMER bool "CLINT Timer for the RISC-V platform" if COMPILE_TEST depends on GENERIC_SCHED_CLOCK && RISCV diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile index 4bb856e4df55..8dc2f0ea2d0f 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -80,6 +80,7 @@ obj-$(CONFIG_INGENIC_TIMER) += ingenic-timer.o obj-$(CONFIG_CLKSRC_ST_LPC) += clksrc_st_lpc.o obj-$(CONFIG_X86_NUMACHIP) += numachip.o obj-$(CONFIG_RISCV_TIMER) += timer-riscv.o +obj-$(CONFIG_STARFIVE_JH7110_TIMER) += timer-jh7110.o obj-$(CONFIG_CLINT_TIMER) += timer-clint.o obj-$(CONFIG_CSKY_MP_TIMER) += timer-mp-csky.o obj-$(CONFIG_GX6605S_TIMER) += timer-gx6605s.o diff --git a/drivers/clocksource/timer-jh7110.c b/drivers/clocksource/timer-jh7110.c new file mode 100644 index 000000000000..9257689c2e8a --- /dev/null +++ b/drivers/clocksource/timer-jh7110.c @@ -0,0 +1,345 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Starfive JH7110 Timer driver + * + * Copyright (C) 2023 StarFive Technology Co., Ltd. + * + * This timer has four free-running and independent 32-bit counters and runs in 24MHz + * clock on the StarFive JH7110 SoC. Each channel(counter) can trigger an interrupt + * when timeout even CPU is sleeping. They support one-shot mode and continuous-run mode. + * + * Each channel is used as a global timer that serves each cpu core: + * JH7110 Timer Channel 0 -- CPU 0 + * JH7110 Timer Channel 1 -- CPU 1 + * JH7110 Timer Channel 2 -- CPU 2 + * JH7110 Timer Channel 3 -- CPU 3 + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Bias: Ch0-0x0, Ch1-0x40, Ch2-0x80, and so on. */ +#define JH7110_TIMER_CH_LEN 0x40 +#define JH7110_TIMER_CH_BASE(x) ((x) * JH7110_TIMER_CH_LEN) +#define JH7110_TIMER_CH_MAX 4 + +#define JH7110_DELAY_US 0 +#define JH7110_TIMEOUT_US 10000 +#define JH7110_CLOCKEVENT_RATING 300 +#define JH7110_TIMER_MAX_TICKS 0xffffffff +#define JH7110_TIMER_MIN_TICKS 0xf + +#define JH7110_TIMER_INT_STATUS 0x00 /* RO[0:4]: Interrupt Status for channel0~4 */ +#define JH7110_TIMER_CTL 0x04 /* RW[0]: 0-continuous run, 1-single run */ +#define JH7110_TIMER_LOAD 0x08 /* RW: load value to counter */ +#define JH7110_TIMER_ENABLE 0x10 /* RW[0]: timer enable register */ +#define JH7110_TIMER_RELOAD 0x14 /* RW: write 1 or 0 both reload counter */ +#define JH7110_TIMER_VALUE 0x18 /* RO: timer value register */ +#define JH7110_TIMER_INT_CLR 0x20 /* RW: timer interrupt clear register */ +#define JH7110_TIMER_INT_MASK 0x24 /* RW[0]: timer interrupt mask register */ + +#define JH7110_TIMER_INT_CLR_ENA BIT(0) +#define JH7110_TIMER_INT_CLR_AVA_MASK BIT(1) + +#define JH7110_PERCPU_GET_CLKEVT (&jh7110_timer_info.clkevt[smp_processor_id()]) + +/** + * struct jh7110_clkevt - Description of each timer channel + * @clk: Clock of each timer channel + * @rst: Reset of each timer channel + * @base: Virtual address of each timer channel + * @irq: Interrupt number of each timer channel + * @timer_enabled: Enabled flag for each timer channel + * @name: Name of each timer channel + */ +struct jh7110_clkevt { + struct clk *clk; + struct reset_control *rst; + void __iomem *base; + int irq; + bool timer_enabled; + char name[sizeof("jh7110-timer.chX")]; +}; + +struct jh7110_timer_priv { + struct clk *pclk; + struct reset_control *prst; + struct device *dev; + struct jh7110_clkevt clkevt[JH7110_TIMER_CH_MAX]; +}; + +static struct jh7110_timer_priv jh7110_timer_info; + +/* 0:continuous-run mode, 1:single-run mode */ +enum jh7110_timer_mode { + JH7110_TIMER_MODE_CONTIN, + JH7110_TIMER_MODE_SINGLE, +}; + +/* Interrupt Mask, 0:Unmask, 1:Mask */ +enum jh7110_timer_int_mask { + JH7110_TIMER_INT_ENA, + JH7110_TIMER_INT_DIS, +}; + +enum jh7110_timer_enable { + JH7110_TIMER_DIS, + JH7110_TIMER_ENA, +}; + +/* + * BIT(0): Read value represent channel int status. + * Write 1 to this bit to clear interrupt. Write 0 has no effects. + * BIT(1): "1" means that it is clearing interrupt. BIT(0) can not be written. + */ +static inline int jh7110_timer_int_clear(struct jh7110_clkevt *clkevt) +{ + u32 value; + int ret; + + /* Waiting interrupt can be cleared */ + ret = readl_poll_timeout_atomic(clkevt->base + JH7110_TIMER_INT_CLR, value, + !(value & JH7110_TIMER_INT_CLR_AVA_MASK), + JH7110_DELAY_US, JH7110_TIMEOUT_US); + if (!ret) + writel(JH7110_TIMER_INT_CLR_ENA, clkevt->base + JH7110_TIMER_INT_CLR); + + return ret; +} + +static int jh7110_timer_start(struct jh7110_clkevt *clkevt) +{ + int ret; + + /* Disable and clear interrupt first */ + writel(JH7110_TIMER_INT_DIS, clkevt->base + JH7110_TIMER_INT_MASK); + ret = jh7110_timer_int_clear(clkevt); + + writel(JH7110_TIMER_INT_ENA, clkevt->base + JH7110_TIMER_INT_MASK); + writel(JH7110_TIMER_ENA, clkevt->base + JH7110_TIMER_ENABLE); + + return 0; +} + +static int jh7110_timer_shutdown(struct clock_event_device *evt) +{ + struct jh7110_clkevt *clkevt = JH7110_PERCPU_GET_CLKEVT; + + writel(JH7110_TIMER_DIS, clkevt->base + JH7110_TIMER_ENABLE); + return jh7110_timer_int_clear(clkevt); +} + +/* IRQ handler for the timer */ +static irqreturn_t jh7110_timer_interrupt(int irq, void *data) +{ + struct clock_event_device *evt = (struct clock_event_device *)data; + struct jh7110_clkevt *clkevt = &jh7110_timer_info.clkevt[0]; + u32 reg = readl(clkevt->base + JH7110_TIMER_INT_STATUS); + u8 cpu_id = smp_processor_id(); + + /* Check interrupt status and channel(cpu) ID */ + if (!(reg & BIT(cpu_id))) + return IRQ_NONE; + + clkevt = &jh7110_timer_info.clkevt[cpu_id]; + writel(JH7110_TIMER_INT_CLR_ENA, (clkevt->base + JH7110_TIMER_INT_CLR)); + + if (evt->event_handler) + evt->event_handler(evt); + + return IRQ_HANDLED; +} + +static int jh7110_timer_set_periodic(struct clock_event_device *evt) +{ + struct jh7110_clkevt *clkevt = JH7110_PERCPU_GET_CLKEVT; + + writel(JH7110_TIMER_MODE_CONTIN, clkevt->base + JH7110_TIMER_CTL); + return 0; +} + +static int jh7110_timer_set_oneshot(struct clock_event_device *evt) +{ + struct jh7110_clkevt *clkevt = JH7110_PERCPU_GET_CLKEVT; + + writel(JH7110_TIMER_MODE_SINGLE, clkevt->base + JH7110_TIMER_CTL); + return 0; +} + +static int jh7110_timer_set_next_event(unsigned long next, + struct clock_event_device *evt) +{ + struct jh7110_clkevt *clkevt = JH7110_PERCPU_GET_CLKEVT; + + writel(JH7110_TIMER_MODE_SINGLE, clkevt->base + JH7110_TIMER_CTL); + writel(next, clkevt->base + JH7110_TIMER_LOAD); + + return jh7110_timer_start(clkevt); +} + +static DEFINE_PER_CPU(struct clock_event_device, jh7110_clock_event) = { + .features = CLOCK_EVT_FEAT_PERIODIC | + CLOCK_EVT_FEAT_ONESHOT, + .rating = JH7110_CLOCKEVENT_RATING, + .set_state_shutdown = jh7110_timer_shutdown, + .set_state_periodic = jh7110_timer_set_periodic, + .set_state_oneshot = jh7110_timer_set_oneshot, + .set_state_oneshot_stopped = jh7110_timer_shutdown, + .set_next_event = jh7110_timer_set_next_event, +}; + +static int jh7110_timer_dying_cpu(unsigned int cpu) +{ + struct jh7110_timer_priv *priv = &jh7110_timer_info; + + if (!priv->clkevt[cpu].timer_enabled) + return 0; + + writel(JH7110_TIMER_DIS, priv->clkevt[cpu].base + JH7110_TIMER_ENABLE); + jh7110_timer_int_clear(&priv->clkevt[cpu]); + reset_control_assert(priv->clkevt[cpu].rst); + clk_disable_unprepare(priv->clkevt[cpu].clk); + + return 0; +} + +static int jh7110_timer_starting_cpu(unsigned int cpu) +{ + struct clock_event_device *evt = per_cpu_ptr(&jh7110_clock_event, cpu); + struct jh7110_timer_priv *priv = &jh7110_timer_info; + int err; + u32 rate; + + if (cpu >= JH7110_TIMER_CH_MAX) + return -ENOMEM; + + err = clk_prepare_enable(priv->clkevt[cpu].clk); + if (err) + goto err_starting_cpu; + + err = reset_control_deassert(priv->clkevt[cpu].rst); + if (err) + goto err_soft_reset; + + rate = clk_get_rate(priv->clkevt[cpu].clk); + evt->cpumask = cpumask_of(cpu); + evt->irq = priv->clkevt[cpu].irq; + + err = irq_force_affinity(evt->irq, cpumask_of(cpu)); + if (err) + goto err_affinity; + + clockevents_config_and_register(evt, rate, JH7110_TIMER_MIN_TICKS, + JH7110_TIMER_MAX_TICKS); + + /* Use one-shot mode */ + writel(JH7110_TIMER_MODE_SINGLE, (priv->clkevt[cpu].base + JH7110_TIMER_CTL)); + + priv->clkevt[cpu].timer_enabled = true; + + err = jh7110_timer_start(&priv->clkevt[cpu]); + if (err) + goto err_affinity; + return 0; + +err_affinity: + reset_control_assert(priv->clkevt[cpu].rst); +err_soft_reset: + clk_disable_unprepare(priv->clkevt[cpu].clk); +err_starting_cpu: + free_irq(evt->irq, evt); + return err; +} + +static int jh7110_timer_probe(struct platform_device *pdev) +{ + struct jh7110_timer_priv *priv = &jh7110_timer_info; + struct clock_event_device *evt; + struct jh7110_clkevt *clkevt; + char name[sizeof("chX")]; + int ch; + int ret; + void __iomem *base; + + base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return dev_err_probe(&pdev->dev, PTR_ERR(base), + "failed to map registers\n"); + + priv->prst = devm_reset_control_get_exclusive(&pdev->dev, "apb"); + if (IS_ERR(priv->prst)) + return dev_err_probe(&pdev->dev, PTR_ERR(priv->prst), + "failed to get apb reset\n"); + + priv->pclk = devm_clk_get_enabled(&pdev->dev, "apb"); + if (IS_ERR(priv->pclk)) + return dev_err_probe(&pdev->dev, PTR_ERR(priv->pclk), + "failed to get & enable apb clock\n"); + + ret = reset_control_deassert(priv->prst); + if (ret) + return dev_err_probe(&pdev->dev, ret, "failed to deassert apb reset\n"); + + for (ch = 0; ch < JH7110_TIMER_CH_MAX; ch++) { + evt = per_cpu_ptr(&jh7110_clock_event, ch); + clkevt = &priv->clkevt[ch]; + snprintf(name, sizeof(name), "ch%d", ch); + + clkevt->base = base + JH7110_TIMER_CH_BASE(ch); + /* Ensure timer is disabled */ + writel(JH7110_TIMER_DIS, clkevt->base + JH7110_TIMER_ENABLE); + ret = jh7110_timer_int_clear(clkevt); + if (ret) + return ret; + + clkevt->rst = devm_reset_control_get_exclusive(&pdev->dev, name); + if (IS_ERR(clkevt->rst)) + return PTR_ERR(clkevt->rst); + + clkevt->clk = devm_clk_get(&pdev->dev, name); + if (IS_ERR(clkevt->clk)) + return PTR_ERR(clkevt->clk); + + clkevt->irq = platform_get_irq(pdev, ch); + if (clkevt->irq < 0) + return clkevt->irq; + + snprintf(clkevt->name, sizeof(clkevt->name), "jh7110-timer.ch%d", ch); + ret = devm_request_irq(&pdev->dev, clkevt->irq, jh7110_timer_interrupt, + IRQF_TIMER | IRQF_IRQPOLL, + clkevt->name, evt); + + if (ret) + return ret; + + clkevt->timer_enabled = false; + } + + return cpuhp_setup_state(CPUHP_AP_JH7110_TIMER_STARTING, + "clockevents/jh7110/timer:starting", + jh7110_timer_starting_cpu, jh7110_timer_dying_cpu); +} + +static const struct of_device_id jh7110_timer_match[] = { + { .compatible = "starfive,jh7110-timer", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, jh7110_timer_match); + +static struct platform_driver jh7110_timer_driver = { + .probe = jh7110_timer_probe, + .driver = { + .name = "jh7110-timer", + .of_match_table = jh7110_timer_match, + }, +}; +module_platform_driver(jh7110_timer_driver); + +MODULE_AUTHOR("Xingyu Wu "); +MODULE_DESCRIPTION("StarFive JH7110 timer driver"); +MODULE_LICENSE("GPL"); diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h index 172d0a743e5d..a46f46906c23 100644 --- a/include/linux/cpuhotplug.h +++ b/include/linux/cpuhotplug.h @@ -175,6 +175,7 @@ enum cpuhp_state { CPUHP_AP_CSKY_TIMER_STARTING, CPUHP_AP_TI_GP_TIMER_STARTING, CPUHP_AP_HYPERV_TIMER_STARTING, + CPUHP_AP_JH7110_TIMER_STARTING, /* Must be the last timer callback */ CPUHP_AP_DUMMY_TIMER_STARTING, CPUHP_AP_ARM_XEN_STARTING, From patchwork Mon Mar 18 03:06:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ziv Xu X-Patchwork-Id: 13594961 X-Patchwork-Delegate: mail@conchuod.ie Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6700AC54E67 for ; Mon, 18 Mar 2024 03:07:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6WydlrvXXAfrF9x7W12vJ+BtMsXowQ+IQWmfxGxLhbM=; b=dGxiL+5osSSLaB 769gxeo0uXwoBTru7ZQUnSb0/uNXevnNP24wwL4Y+ie8gg7A41K+k36C4VUtpKk1F8GmiFQM1ofKc vQ/yiuSFiJETUbmDbkAGFmI7WIk97aJwpBwHDWtPR3GEkIW/PC4Mnpur0NGCBs9B2NOGX+//Jud/G j/WOaxzSD/sezu+LF2L2ictDnWZ050MssoQ0FLswjn4hv+8N0IgO3KTxstxq0qG98mFuZz0UnHqYo Dsp5c0ZCkIWBI7R9G5lsKBFMQRucEEA9Gc9q3DHwNADE/twLmMUfHtvyAqEf2eC/17W9HBtt3v+P6 gFgVMvPW9koePJvqY9Vw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LG-000000076h0-2K0c; Mon, 18 Mar 2024 03:07:14 +0000 Received: from mail-sh0chn02on20718.outbound.protection.partner.outlook.cn ([2406:e500:4420:2::718] helo=CHN02-SH0-obe.outbound.protection.partner.outlook.cn) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rm3LC-000000076dW-2PsW for linux-riscv@lists.infradead.org; Mon, 18 Mar 2024 03:07:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Isnf6Ml83z3pkIUlqmOrbSWw3hEKbCX+E7Ve7sOfqg9BxXTgGTjyU5cjNN5WgjW6nM1yRAD3WD4Wd4vICHGwol0mJSpmU5LTF0VOcHRQfLpvwD0QGzKLxxj30zDDgTtQ4bPG+bO4Sx+kajYZb7RHI/WuhaKggMv0FCAuWpRWhnw9iWV+UsyXOYqxEjicxc7ptpOCpswC92cM1sMG5HsjGQNEoXuHjw17OUepbJoRqYDafGt1zCtTQyk/+udCpqLGCMCLmrfbgFIPq+njAxXdQi7RbVZUYSJsaxxXLl6rm6byQXQxCByFusOk1Md9sDHQNOa/qycCRGYsWqFG4HqRjA== 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=vwesO3TlWOUb/SeUcoTcgPg2OAH7CMFLLOgpIP0oUaI=; b=Gh0uL+U/D+otwMbLwqrhew65e/9wUcubv16l+UsDJklIbkbMWKxTs66NWMa3+8SxUri25ZJNBgUGDOmZ8cA92mb8ZcYUrjdY6vyZt+ERBn1CvRdjIZY5uOBQW4YjGaUQqXcpUAbQshAUYkrByjQhbaKHOEjcZvc7DFp9eG/JHyKlUX3UgT+oT/TrlZzku8yQGZF/Z3fWttd3GNPItaE4asEfRzphHx5uVTwZdqatBIB4NeLgkYIE+1K9TYqVqWH5k+zY6eoybMCWS9Fks79Rrv6CTuswm9kpRAjVJDOZfie/VofyIBWK08orYBmnbPUFfhhO7yw/p4B1ksHs2Q29PQ== 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 NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) by NTZPR01MB1049.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.20; Mon, 18 Mar 2024 03:06:58 +0000 Received: from NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880]) by NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn ([fe80::6011:feb9:5761:3880%6]) with mapi id 15.20.7386.016; Mon, 18 Mar 2024 03:06:58 +0000 From: Ziv Xu To: Daniel Lezcano , Thomas Gleixner , Emil Renner Berthing , Christophe JAILLET Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Philipp Zabel , Walker Chen , Xingyu Wu , linux-kernel@vger.kernel.org, Conor Dooley Subject: [PATCH v9 3/3] riscv: dts: jh7110: starfive: Add timer node Date: Mon, 18 Mar 2024 11:06:49 +0800 Message-Id: <20240318030649.10413-4-ziv.xu@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240318030649.10413-1-ziv.xu@starfivetech.com> References: <20240318030649.10413-1-ziv.xu@starfivetech.com> X-ClientProxiedBy: NT0PR01CA0018.CHNPR01.prod.partner.outlook.cn (2406:e500:c510::11) To NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:b::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: NTZPR01MB0986:EE_|NTZPR01MB1049:EE_ X-MS-Office365-Filtering-Correlation-Id: 685ca1a6-f96e-48e7-7335-08dc46f8792c X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: R2MMQshF4yl6PnIGzPPUiz+cYxr6WpGGxYmXr7YTrcjMRxNDIPXtVJ0hzGR8+q0qlQnZmeeYYPksDM1n5ieHJr3GuHUEP81/AxJ5kc1KLm6bVRSlHRvGGDxbKmqDGYyes3Q54Ni/yp4lTH5OIAGXBkkMdxC0WCEKuAWmaTDY4emat2kzwqJ8SOvlGiZpZXq12Npf0WV3cMl2aD6mmN/4cyg0cFIlx1Z7fdA5UtBI0NkU5KvMs+2zsBsH17Affk5yBRDwbX9hKBDF5O+M6gzAPkhdZCDVCCREuWgKuPEs+ww1MNIKj7uBsBp09AEk6l91iRhqpbVRbe4lVuM1R9dsDAQM7ZxgSeaCo6InbGE3b1ejV8hAKfvK3N7gh+Zfpb0buHs7gvCWIY97fxZe9+p8D+OUMIoUr8bsMAQ/Ame4s+W3PwuvvexfYIwgpV7z/tmgn/51JyGdMvAI3OeATvpepiJKhi9baj20fP9N8+UMCOY5EylySOC1tnyH8Xaghq4+/1WkFqPb2Bl/2RlaVP+h5v1C36xr8sZQ6CKfZ/1F5RwO+OgGLYQi15JYlCz+lrDIaVO2Yvc+ODTcCcr2rSX7rzEAMpR9eSFaVUtvsbZqP6ps++iAZAgXnYgxer4W9wAU X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x4ZWWwT9cW2ujWoxKEwVCPHcaWqCWBYjXiqviyx4TweXWPv69FuORzRX6eFbSvU3dibLvDoYqi3JprAQU9kYvqUQ+qAgm42oo82exVY2m7hAhziT1S+CwnkpZRkl7WH/iIx5sZmytETFqmwCfZZ+L0/weZ80+qPvG0tTVtDhFLnOuaEIhrzMgUAOi51zBEfkqWLYgew7/OZ+TSSxIziwfiAUYoT0SNt6m5nnMh06TbdrXoTmwnFKvCKR2g+vS1DbMc5K1evx10PQY9n2/wJd5zva0/btk4APFfRffSMWEBSYiHfpz6yEFcWH/I5ikKJ4xvo+pNdFxObHUquL6LUNyZa7KOkpMB5YXaUU4fN+K1J/Xe4z7ah3HZd7E49QVn7EfQIb3al1ZtWZnoABBSNnTH2SXaurO1zRmD5CUuXIOEesV6ki/Tz9nIJhHkVm5DHW4LTbpmw5UqmDFl93FrodLEGXfY+DiPG2Xhrg6zO7qbt+g6I9FZN5e0PoG0YT9VvMzIns1B9jKdMfkCzLi/6UcbdTcFP/KuxOvriAXUWUXNwbrYmeuKUzUvxPuFayi8jJ11/L5gwW0L/87F+XryRIH9Z75rkyzIInnFJ3i0iadJJj4jSM9YNR46ICeJGMqNiVbgUUjkvkXRVAVojIb8I7eOQs+wPRY6R4KU+urWwG6DDQOqIK0nohXOipIFxkHOsqOFnSBYo2lDfbb5gielWEHcwWLgEPAxiV9KbQNPgDw3pWfIWwMwGfrXWF4gE+nmEC4Gn0Uku2F60EF32yTaJtHot8EJMwwairJ/1WRRsSwbQH71n4i7+i7XkJlFiNeob/w5yxbIl4ku0DZdWdP61jWzoU5yQ7nYfmhQHrNOFPUaODpYaxRhto6LKiPxAs8aSxlNSotERzzeZFYGZ+OgTjwjAvuGCKE/6V4rnwS0xruYAY+uv6oMV5/kws1elJpz7GNu7U5ezA3u5Vs3NRDPLjRtzYLixeGe7Zj+OaIs//LqGSHW2O0wLOFudY8mxNy7WJdIRfGdTgZsKhwWsKzYpe3I3QaVee5Y+juPSxr+k3VlyVIQ7kWq0xC5Q051td16YU9JSR4mlbhDgaGQTBwLCEypyarzk79NdHw+NOu1ppF7jqHqo649CvBDW4PCG7AlZhHksl5JZXIQog8a8oZrLgjJaTssz8GkQUaiy0YdEGaTJAacbOu6AkSiCnpmeJRDd590VOKDHMPbl7qoUioki1MZvqwiUJ7Yf4R0ykvUFCJu6+F4fOHytfqHkXWwVBmIIrpmsLVGHFpoE/nJGQmd536aWjzdOFrsUuLsSXXsveNMd1qVvLpRQ2guvCOUTBJmuMP19ex4YkTyhqNayXFWaiDWQWMwfmsg4/nuRInAcGkuMaM5EbGJGrNzN/akU+sf8V7Vai3Kmgyr++YICf72z7aJFJ/B96NgMxzhaN+Cpqlo9EfxCEtpFORn6kYytqSN8vQ4Gi6+Ay8M0KGdOZI8HdBIDkBDgM5P/ySeWuD/cSNqFKuu3kosLwTnuqI8ix08tB+Otnrfdo8HrxKenqXD8IEJIuy7FtgYkizFjm5cvaA7u7FoqJVam+sbRC+3b5Dd77 X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 685ca1a6-f96e-48e7-7335-08dc46f8792c X-MS-Exchange-CrossTenant-AuthSource: NTZPR01MB0986.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 03:06:57.9615 (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: o6KiNd5F0vUMI3IUEgoiGSVAOl7GNOW1t217HpDXBVdF+YCeuvWG6B1ftYd+jbhIKAU4rW1YcRj3rIb2cdhzYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: NTZPR01MB1049 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240317_200711_065255_2F50F1FC X-CRM114-Status: UNSURE ( 7.81 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org From: Xingyu Wu Add the timer node for the Starfive JH7110 SoC. Reviewed-by: Emil Renner Berthing Reviewed-by: Walker Chen Signed-off-by: Xingyu Wu --- arch/riscv/boot/dts/starfive/jh7110.dtsi | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi index 74ed3b9264d8..40dcceaf1f98 100644 --- a/arch/riscv/boot/dts/starfive/jh7110.dtsi +++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi @@ -904,6 +904,26 @@ #gpio-cells = <2>; }; + timer@13050000 { + compatible = "starfive,jh7110-timer"; + reg = <0x0 0x13050000 0x0 0x10000>; + interrupts = <69>, <70>, <71>, <72>; + clocks = <&syscrg JH7110_SYSCLK_TIMER_APB>, + <&syscrg JH7110_SYSCLK_TIMER0>, + <&syscrg JH7110_SYSCLK_TIMER1>, + <&syscrg JH7110_SYSCLK_TIMER2>, + <&syscrg JH7110_SYSCLK_TIMER3>; + clock-names = "apb", "ch0", "ch1", + "ch2", "ch3"; + resets = <&syscrg JH7110_SYSRST_TIMER_APB>, + <&syscrg JH7110_SYSRST_TIMER0>, + <&syscrg JH7110_SYSRST_TIMER1>, + <&syscrg JH7110_SYSRST_TIMER2>, + <&syscrg JH7110_SYSRST_TIMER3>; + reset-names = "apb", "ch0", "ch1", + "ch2", "ch3"; + }; + watchdog@13070000 { compatible = "starfive,jh7110-wdt"; reg = <0x0 0x13070000 0x0 0x10000>;