From patchwork Wed Mar 3 08:11:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steen Hegelund X-Patchwork-Id: 12113935 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87244C433E0 for ; Wed, 3 Mar 2021 17:30:00 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7506164EDF for ; Wed, 3 Mar 2021 17:29:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7506164EDF Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; 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=gF0eJRNpcUInMrKA2nUKodBe58u0RXJKwRkilQbiSiI=; b=nnaSmxIQTpXRfQYkP8xKbKMFs oRUreoPSc2ncCTh5pMbZKCGSB3juRY+A9K+phgK1xSPduG/+jqVG6P9DAn43hx8n5+cg8DEA2gekC 87LDeVw+onzffPobNX6rIlx0r41ARNjXnd+cTYbKkNMD0w9S9eCaKU2829b4/u1aazFabJ3w+0EDA wPAYm4hI03jyr52JL0XbBwea9g9LJtMfxYCkoP6PCJS6r5pC8K0tWATR0aO+lS2vMjCw9Xgrdd14G /s+TA9bHQHun4Tj3riPhs0Of4i1q05RQ8NpccnKIulg+u7jp1cP7CCFzh5oiQfUQ4TObKmRNdSI4x wWf2BJTiA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lHVHF-005nWu-92; Wed, 03 Mar 2021 17:27:14 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHSuk-005FNF-BR for linux-arm-kernel@desiato.infradead.org; Wed, 03 Mar 2021 14:55:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=9/8nD614m+9wDY0UhmdoYBoGQlbeV3K4Dnmam6obYmE=; b=lVWeA3CoSd1iKN6Y1TQptsuAOo 6dJ+tWIj3OOyAGiKM5K2DKwS144XXb8gVsudzUglZh+ntPE9byRvCUvK197dNabr3+IsswWww7unn U0DWj/GXzV+w2QzJN42Z/rbLnCAWGOjyk9/VB4kEnZfwnuBgpwn6n0TKtewR/GT8OiJzSOvpp8cU9 VuIGJk2SVSV/myjYuhxtWp28fe1REhOvSLk4T7AbBiPrjeI5FB0vOq6KtJb/7yMk8kA3EE8PG0UX5 xwL0omGrLM36l/8YipJWkGsxdwT0WOlGmO2eQmfGA5aXyEuqww7uHAtjhJDwRHef1WwnkBZpch82+ pMvfGxZQ==; Received: from esa.microchip.iphmx.com ([68.232.154.123]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHMdC-001npT-8Y for linux-arm-kernel@lists.infradead.org; Wed, 03 Mar 2021 08:13:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1614759198; x=1646295198; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZMP0RR3DfODg8HK1LLJY82GvxRtZDSQ6PcUVaezXGH8=; b=W5RwuYoGmtv4ogUagnlf4eV3JPEjJevTo1FOwAZQQ4rbLPXBf7A1f+cZ OR6j0yvT0wuPVpWWveFqf87USmWs8mk5IXP2qs5McplfWMB7NlfcUM5iz iJvwTS+GYAI7qfoOyFY/YObSDq5cGRFh+T68Auqz8AMPtrWYUtkwOqAip +tXgI10E5lkp2MlNeyRdmoWxPcf8yZBgNJJSR7AIVhsMlHvcY9NeVThcv 7Afq85Ge4dkHphmSX2liFN5hlP4pbvo+JGK8iuKU+WY06oCilSepRQtUO mCN78Sym4WsyhAOhKOdS7tcM5AzQy9reP3Y9NTWUqVWRQyBh3SnX00IHd A==; IronPort-SDR: v2JYbKbUMSSPrPQTX4TtccihZaZ6+iCt9eaDV7iyFxqSrLFv2OzyhopjBDR49AXRT1IiPidZWv kPMHgnl/Ysm0jt/3QURloWWkypnuOTh+k9FsbDwRM2A1d1ej4ZoXVprasjxLDEJuEtucoiCuDe 0Y73KsGH6x3f8EdedDs+YkJNCw/4QBZRCTDD0ZzYzdqW/59oXu0KPqcicmqNvC4Ji4Acn1tDrV KsdRssA4G9d8FzP/sZKUeTG1DxU8/GmbTcP42tCcn/jB/4Xh+hgRaLYz4hPaIDTkdgulaP69Z4 +L4= X-IronPort-AV: E=Sophos;i="5.81,219,1610434800"; d="scan'208";a="105779094" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 03 Mar 2021 01:12:07 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 3 Mar 2021 01:12:07 -0700 Received: from mchp-dev-shegelun.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 3 Mar 2021 01:12:05 -0700 From: Steen Hegelund To: Philipp Zabel , Rob Herring CC: Steen Hegelund , Andrew Lunn , Microchip Linux Driver Support , Alexandre Belloni , Gregory Clement , , , Subject: [PATCH v7 1/3] dt-bindings: reset: microchip sparx5 reset driver bindings Date: Wed, 3 Mar 2021 09:11:56 +0100 Message-ID: <20210303081158.684532-2-steen.hegelund@microchip.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210303081158.684532-1-steen.hegelund@microchip.com> References: <20210303081158.684532-1-steen.hegelund@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210303_081318_971091_DCF99937 X-CRM114-Status: GOOD ( 12.32 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Document the Sparx5 reset device driver bindings The driver uses a syscon and an IO range on sparx5 for access to the reset control and the reset status. Signed-off-by: Steen Hegelund --- .../bindings/reset/microchip,rst.yaml | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/microchip,rst.yaml diff --git a/Documentation/devicetree/bindings/reset/microchip,rst.yaml b/Documentation/devicetree/bindings/reset/microchip,rst.yaml new file mode 100644 index 000000000000..370579aeeca1 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/microchip,rst.yaml @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/reset/microchip,rst.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Microchip Sparx5 Switch Reset Controller + +maintainers: + - Steen Hegelund + - Lars Povlsen + +description: | + The Microchip Sparx5 Switch provides reset control and implements the following + functions + - One Time Switch Core Reset (Soft Reset) + +properties: + $nodename: + pattern: "^reset-controller@[0-9a-f]+$" + + compatible: + const: microchip,sparx5-switch-reset + + reg: + items: + - description: global control block registers + + reg-names: + items: + - const: gcb + + "#reset-cells": + const: 1 + + cpu-syscon: + $ref: "/schemas/types.yaml#/definitions/phandle" + description: syscon used to access CPU reset + +required: + - compatible + - reg + - reg-names + - "#reset-cells" + - cpu-syscon + +additionalProperties: false + +examples: + - | + reset: reset-controller@11010008 { + compatible = "microchip,sparx5-switch-reset"; + reg = <0x11010008 0x4>; + reg-names = "gcb"; + #reset-cells = <1>; + cpu-syscon = <&cpu_ctrl>; + }; + From patchwork Wed Mar 3 08:11:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steen Hegelund X-Patchwork-Id: 12113661 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-21.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB4A0C433E0 for ; Wed, 3 Mar 2021 15:11:31 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 40EFE64EEC for ; Wed, 3 Mar 2021 15:11:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 40EFE64EEC Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; 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=3TlkhVPxVHuNhreyfUVFookP4/b4GlSes6X/ZwwLDVA=; b=BdJFexwDiklqg/Q1oA+Hon9ix E9wLpNM+qp7JKmQmpY7ELBA0pe7mm43AEdtOx3KG6pOUUfcmahXOy8C79T3mgJthl86R6G3nWkqNH AS4FBKJv7wp+6Dt84oMi5F5CLAOtMLNJqv3WwYWZYF8nJDmqhFyOzMoIuiwWef/g2lVe2MPwz4VHJ XG0MSGMrdT9O/WM8N117+yOeUA4o+rq/ydCnKx0V1usWF0nvZR0Ra+LXmZlP5XOQl15bP0eJW3f82 iM2gd48oMyQkUZv/vokk4vfdjzsgUVQivU/Hn4DJgELNAOkQ51CPMoelEtwmY2CZB77BpIZ6rK8ZW Ll8UvaOfw==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lHT7S-005JPA-1Q; Wed, 03 Mar 2021 15:08:58 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHSC0-0054bN-8u for linux-arm-kernel@desiato.infradead.org; Wed, 03 Mar 2021 14:09:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=Wpxo/gbAfSnboVqkCv2myNFkmbJ9fa9KYQ1nm7xClqw=; b=Hk4faIsd9i8d9c1ZUug2FNUEg5 2IY6/MNvHpOByEAQN80m6MB7eTW5AAvnLnmv3GF8arHM/eOlgFLAPMnQGKjXEz7T3KkXwUmrgIvy0 dDw1WWP+v33S4m3OH56G3S6G0ChGFeb9g0A04CfGPFkcb1nPMyONIpjnslrQn6NMKWiXJdopm0TwM YS4S74SdWNTlSqgC0R10/YoCgsmJ9lOie2+XaTg65oksAgsXlN9hDGDYagLmS0Xda5He3nEBF/cZT L+lAUyXsD72C8RwflxIR60vcYQzEN0FLFrZtMGpzMzRxY0ZaJIXxksXxBeZJpYMFRBeQi3aOC86vx wGuKFtUw==; Received: from esa.microchip.iphmx.com ([68.232.154.123]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHMdE-001npT-0l for linux-arm-kernel@lists.infradead.org; Wed, 03 Mar 2021 08:13:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1614759200; x=1646295200; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=SgtkHUhk7AyV98FfTKFu+O0lqqTdsBUVkl0kwM8nzAY=; b=mUHkPGd98MLFgmAGj2BnosDp61is6f2gNR9k7FSpB71GHHI17wpuJlyO Axynt5ZlZjtuJ5uOUId+SOmhSiYAAnoh2Npc8hktklH+lFq5zmYcGUlNV ZEe4S8EGrmmTFjH7rAHdz6XqN1RGohzIyzUX8w38YVdWN9MebQx/8LGX4 n+yH3RNy7oDjqga+pB7XYxzwZ/kp+Kl1NP2U5u691BfNVjWjt/ZeYuAAW JiaIuPhHhz1QlcnAem5zCW42ptSk3yiSMcigQW3OZIg3eVgitM+hm2OGn UdNJkxEaO/ZTLlA3iRvsstq10Ul4kn7RVoiubcGMoDN5NBTHzY6GJZdgZ A==; IronPort-SDR: mba0H4FvJvIu8NE0pTR3/xflqSwf2acdcRhh26088ezk1Br6K2auOcHUWm7rAI+VWYyot+wtJf OehdlOZjoGKEKoha0clQRPC0Jg5A9en+4Xeeqo6fKqSwpjwjRsTldSn3b69LYI7B1dZIt0HsBN 7NRr6wpeFLnv4CUau+Ly+EOTTqBEjUiTbSRI+hlcuBzijK5Ini1+BKN98IIMX3rzeGUTe/wBQb v1pHSMm1E+TyLWjP26RfIDRZNedsqsVr14mH8jeTfrJVvd/+CIlYKnya68xxaCwfdxcn/F9AG5 /uo= X-IronPort-AV: E=Sophos;i="5.81,219,1610434800"; d="scan'208";a="105779113" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 03 Mar 2021 01:12:14 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 3 Mar 2021 01:12:09 -0700 Received: from mchp-dev-shegelun.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 3 Mar 2021 01:12:07 -0700 From: Steen Hegelund To: Philipp Zabel CC: Steen Hegelund , Andrew Lunn , Microchip Linux Driver Support , Alexandre Belloni , Gregory Clement , , Subject: [PATCH v7 2/3] reset: mchp: sparx5: add switch reset driver Date: Wed, 3 Mar 2021 09:11:57 +0100 Message-ID: <20210303081158.684532-3-steen.hegelund@microchip.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210303081158.684532-1-steen.hegelund@microchip.com> References: <20210303081158.684532-1-steen.hegelund@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210303_081320_566268_9656D1DD X-CRM114-Status: GOOD ( 20.92 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The Sparx5 Switch SoC has a number of components that can be reset indiviually, but at least the Switch Core needs to be in a well defined state at power on, when any of the Sparx5 drivers starts to access the Switch Core, this reset driver is available. The reset driver is loaded early via the postcore_initcall interface, and will then be available for the other Sparx5 drivers (SGPIO, SwitchDev etc) that are loaded next, and the first of them to be loaded can perform the one-time Switch Core reset that is needed. The driver has protection so that the system busses, DDR controller, PCI-E and ARM A53 CPU and a few other subsystems are not touched by the reset. Signed-off-by: Steen Hegelund Reviewed-by: Alexandre Belloni --- drivers/reset/Kconfig | 8 ++ drivers/reset/Makefile | 1 + drivers/reset/reset-microchip-sparx5.c | 146 +++++++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 drivers/reset/reset-microchip-sparx5.c diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 4171c6f76385..c26798092ccf 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -111,6 +111,14 @@ config RESET_LPC18XX help This enables the reset controller driver for NXP LPC18xx/43xx SoCs. +config RESET_MCHP_SPARX5 + bool "Microchip Sparx5 reset driver" + depends on HAS_IOMEM || COMPILE_TEST + default y if SPARX5_SWITCH + select MFD_SYSCON + help + This driver supports switch core reset for the Microchip Sparx5 SoC. + config RESET_MESON tristate "Meson Reset Driver" depends on ARCH_MESON || COMPILE_TEST diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile index 65a118a91b27..c1d6aa9b1b52 100644 --- a/drivers/reset/Makefile +++ b/drivers/reset/Makefile @@ -16,6 +16,7 @@ obj-$(CONFIG_RESET_INTEL_GW) += reset-intel-gw.o obj-$(CONFIG_RESET_K210) += reset-k210.o obj-$(CONFIG_RESET_LANTIQ) += reset-lantiq.o obj-$(CONFIG_RESET_LPC18XX) += reset-lpc18xx.o +obj-$(CONFIG_RESET_MCHP_SPARX5) += reset-microchip-sparx5.o obj-$(CONFIG_RESET_MESON) += reset-meson.o obj-$(CONFIG_RESET_MESON_AUDIO_ARB) += reset-meson-audio-arb.o obj-$(CONFIG_RESET_NPCM) += reset-npcm.o diff --git a/drivers/reset/reset-microchip-sparx5.c b/drivers/reset/reset-microchip-sparx5.c new file mode 100644 index 000000000000..cff39a643a14 --- /dev/null +++ b/drivers/reset/reset-microchip-sparx5.c @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* Microchip Sparx5 Switch Reset driver + * + * Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries. + * + * The Sparx5 Chip Register Model can be browsed at this location: + * https://github.com/microchip-ung/sparx-5_reginfo + */ +#include +#include +#include +#include +#include +#include + +#define PROTECT_REG 0x84 +#define PROTECT_BIT BIT(10) +#define SOFT_RESET_REG 0x00 +#define SOFT_RESET_BIT BIT(1) + +struct mchp_reset_context { + struct regmap *cpu_ctrl; + struct regmap *gcb_ctrl; + struct reset_controller_dev rcdev; +}; + +static struct regmap_config sparx5_reset_regmap_config = { + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, +}; + +static int sparx5_switch_reset(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct mchp_reset_context *ctx = + container_of(rcdev, struct mchp_reset_context, rcdev); + u32 val; + + /* Make sure the core is PROTECTED from reset */ + regmap_update_bits(ctx->cpu_ctrl, PROTECT_REG, PROTECT_BIT, PROTECT_BIT); + + /* Start soft reset */ + regmap_write(ctx->gcb_ctrl, SOFT_RESET_REG, SOFT_RESET_BIT); + + /* Wait for soft reset done */ + return regmap_read_poll_timeout(ctx->gcb_ctrl, SOFT_RESET_REG, val, + (val & SOFT_RESET_BIT) == 0, + 1, 100); +} + +static const struct reset_control_ops sparx5_reset_ops = { + .reset = sparx5_switch_reset, +}; + +static int mchp_sparx5_map_syscon(struct platform_device *pdev, char *name, + struct regmap **target) +{ + struct device_node *syscon_np; + struct regmap *regmap; + int err; + + syscon_np = of_parse_phandle(pdev->dev.of_node, name, 0); + if (!syscon_np) + return -ENODEV; + regmap = syscon_node_to_regmap(syscon_np); + of_node_put(syscon_np); + if (IS_ERR(regmap)) { + err = PTR_ERR(regmap); + dev_err(&pdev->dev, "No '%s' map: %d\n", name, err); + return err; + } + *target = regmap; + return 0; +} + +static int mchp_sparx5_map_io(struct platform_device *pdev, int index, + struct regmap **target) +{ + struct resource *res; + struct regmap *map; + void __iomem *mem; + + mem = devm_platform_get_and_ioremap_resource(pdev, index, &res); + if (!mem) { + dev_err(&pdev->dev, "Could not map resource %d\n", index); + return -ENXIO; + } + sparx5_reset_regmap_config.name = res->name; + map = devm_regmap_init_mmio(&pdev->dev, mem, &sparx5_reset_regmap_config); + if (IS_ERR(map)) + return PTR_ERR(map); + *target = map; + return 0; +} + +static int mchp_sparx5_reset_probe(struct platform_device *pdev) +{ + struct device_node *dn = pdev->dev.of_node; + struct mchp_reset_context *ctx; + int err; + + ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + err = mchp_sparx5_map_syscon(pdev, "cpu-syscon", &ctx->cpu_ctrl); + if (err) + return err; + err = mchp_sparx5_map_io(pdev, 0, &ctx->gcb_ctrl); + if (err) + return err; + + ctx->rcdev.owner = THIS_MODULE; + ctx->rcdev.nr_resets = 1; + ctx->rcdev.ops = &sparx5_reset_ops; + ctx->rcdev.of_node = dn; + + return devm_reset_controller_register(&pdev->dev, &ctx->rcdev); +} + +static const struct of_device_id mchp_sparx5_reset_of_match[] = { + { + .compatible = "microchip,sparx5-switch-reset", + }, + { } +}; + +static struct platform_driver mchp_sparx5_reset_driver = { + .probe = mchp_sparx5_reset_probe, + .driver = { + .name = "sparx5-switch-reset", + .of_match_table = mchp_sparx5_reset_of_match, + }, +}; + +static int __init mchp_sparx5_reset_init(void) +{ + return platform_driver_register(&mchp_sparx5_reset_driver); +} + +postcore_initcall(mchp_sparx5_reset_init); + +MODULE_DESCRIPTION("Microchip Sparx5 switch reset driver"); +MODULE_AUTHOR("Steen Hegelund "); +MODULE_LICENSE("Dual MIT/GPL"); From patchwork Wed Mar 3 08:11:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steen Hegelund X-Patchwork-Id: 12114007 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF145C433E0 for ; Wed, 3 Mar 2021 18:15:59 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4D93F64E6F for ; Wed, 3 Mar 2021 18:15:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D93F64E6F Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; 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=HM5HxBSE2PaiAUtG3w6McjB4K61fFn9psAVlJg7I5+A=; b=HJ3KnZQElNh5dhthTZAcQ/rsz zkHnQAdUB/8pXK9Fc+rCj/YrUDwKVJT6whS6l6xRE8UZGFZ9dIXuq8cWnoPO7rSvSyP6m0i/uSrRf lmXKfPlXODwsYcr71H2MjPn8a1j8PwFrWkPELHVXKKVqfCH6emA05t/jQwwQGTzVt5p4VMfAVvF4B oXuJnp7o0VR41Qk+y8spmAUgonAw50CgiIyyy/KJ0YaPdbQk26B4BZBtCY4rzxEa3qevWRcTd0JGW pp+pitTbezJ5On9+0GPZBXSseX8/g0Lum3/rKZ39LJr3Ct85ZX9v+yAqmouojKAqET8sy2wbLnHiM 8JA0lfNJQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lHW0X-005yJk-1M; Wed, 03 Mar 2021 18:14:01 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHSzA-005GdN-Fi for linux-arm-kernel@desiato.infradead.org; Wed, 03 Mar 2021 15:00:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=uvCBjb4JnRrggLSrUcBVcHRnbkKXJFQwimEL9xtxzpg=; b=W5u4n4QAlmzSyW3jf5Gh1kNSqP xaunnzJHALV9ttNDUuygLX03ZgWGPJ4mALBjC7FCgyJupojgQKX5GIT0wUzsmelG7j1Jti7cgF6KY sYy2t1ky2u4WArF+ZsLjeBiBpobhI3LTRtkuJHvuSuBTsgFSqf2jp7GZqCn81pAF126/XRf2kD6O5 ItmgReiJxdrvwSm8wlpntsvFNgVcTFJTDlM6T9XlgeMWM8HxzvImFqLGUO2WHUQxcq9ZEpVCVfrfJ WxY6mIw1F4y7AyqhIXKleX0lgEsTYdg1VFBmm1x7ZT4f+8m0brvKhd8aiyj3YNMFObGxGaDoP9Bm7 sktHlqEg==; Received: from esa.microchip.iphmx.com ([68.232.154.123]) by casper.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHMdF-001npT-Fo for linux-arm-kernel@lists.infradead.org; Wed, 03 Mar 2021 08:13:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1614759201; x=1646295201; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3l9hEFDNzDkUJtdNsrVkuF+4J4G7EYWCBVDB3gq68X4=; b=qGCbPXoCpFFXT15R+HhffCtv9WXN7C+VLtFVHHI9RGONCU4z7oWQAqRl tmleZOeBtwPDHWAkA4ZUftPjesojcTp374Eh1t1gBz8jNdDA2fUruq4n6 ty1L6ypGV5zd4LQGNsqgdGtHgDNZMRDUwT5E9wCoQzYhG7zr8WrSIrNGP mV/cZUxSCnXpbcyFLr0oCuz9Aql4bTHoNTT2vJERqzZYOJh1JRHSbQfSN Z+wfhet0TVndkZEnzJk7kV4IIv1ZTgpnLpxMfno1Y9A0xY1vgbSSNMlbS uP6+6H0eGhm0qiPRnQG5hFjusKJpBXhPFwzBz++7CvN6lfqYqTZlgymXs Q==; IronPort-SDR: iQYPVk9xanB4c2FbaocUi4c0evwkRflxIIbwFUGG3x8vCutk3HBetl/04nyQsAq1nECXADDnMJ P1AZc3bpYrD3duRhqIQ4E/MXFfL9Fnfaan4y1ApLRHk2jFNK6JF5Rfqgs/q3NBsBpQ/NAo52Bl fudmfx00yMLctWBqylaBeMHV/UfxqCeS2LJmmQSUMo8auf2hrpwXTmDTCFn1bcfdTZ4cSekYHs Oru8RtxWgLB9GDohnzmcrVYANBGomEEDgiZUOFdLcoChJV8xy2xbEjlEXuUVdlhfkHfdK9ew6N k2E= X-IronPort-AV: E=Sophos;i="5.81,219,1610434800"; d="scan'208";a="105779114" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 03 Mar 2021 01:12:14 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 3 Mar 2021 01:12:11 -0700 Received: from mchp-dev-shegelun.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 3 Mar 2021 01:12:09 -0700 From: Steen Hegelund To: Philipp Zabel , Rob Herring CC: Steen Hegelund , Andrew Lunn , Microchip Linux Driver Support , Alexandre Belloni , Gregory Clement , , , Subject: [PATCH v7 3/3] arm64: dts: reset: add microchip sparx5 switch reset driver Date: Wed, 3 Mar 2021 09:11:58 +0100 Message-ID: <20210303081158.684532-4-steen.hegelund@microchip.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210303081158.684532-1-steen.hegelund@microchip.com> References: <20210303081158.684532-1-steen.hegelund@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210303_081322_276297_921084E6 X-CRM114-Status: GOOD ( 10.35 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This provides reset driver support for the Microchip Sparx5 PCB134 and PCB135 reference boards. Signed-off-by: Steen Hegelund Reviewed-by: Alexandre Belloni --- arch/arm64/boot/dts/microchip/sparx5.dtsi | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/microchip/sparx5.dtsi b/arch/arm64/boot/dts/microchip/sparx5.dtsi index 380281f312d8..dc3ada5cf9fc 100644 --- a/arch/arm64/boot/dts/microchip/sparx5.dtsi +++ b/arch/arm64/boot/dts/microchip/sparx5.dtsi @@ -132,9 +132,12 @@ mux: mux-controller { }; }; - reset@611010008 { - compatible = "microchip,sparx5-chip-reset"; + reset: reset-controller@611010008 { + compatible = "microchip,sparx5-switch-reset"; reg = <0x6 0x11010008 0x4>; + reg-names = "gcb"; + #reset-cells = <1>; + cpu-syscon = <&cpu_ctrl>; }; uart0: serial@600100000 {