From patchwork Fri Mar 28 15:15:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 14032211 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 CBF29C3601A for ; Fri, 28 Mar 2025 15:54:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=rZ/A5NQVl/i0LPvXyGUfZOVhC0YHLCb1cbCkUXx5q1Y=; b=F8zaC4+7daWygSkeSbEcPfZuH2 bWH+fl/or73i7F7/90NPb1YpTZngmyU3IHJ3Fn34xDAha1vdU11pjecrBKd1vjko5CGpestsEejnx IbXQKLG2JV5W/P7cSD/rpBIazBxVdX9fDpq1ZDHtbb+CgZK/zS9pu83Lk5gyY8+hobYsJcAxfKBHS faVtDQ5ycNUmp7UT8daKEi/LVs+xX8DvLDNQG0utg8QAaXkPA+SuKUvPBJ8vTunmPe34mXF03j9o5 5gbRcPwS5a4ac4QC1ck0TvxgSp73RRaf/lkXxgqIEAjHCy9uMUJv4U2hPUAwq2TnMWNjkgYtf5cvR xFOzwNUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyC2G-0000000Dp8y-1jV3; Fri, 28 Mar 2025 15:54:20 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyBQZ-0000000DjjJ-23CV for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 15:15:25 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-ac3eb3fdd2eso453369766b.0 for ; Fri, 28 Mar 2025 08:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743174922; x=1743779722; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rZ/A5NQVl/i0LPvXyGUfZOVhC0YHLCb1cbCkUXx5q1Y=; b=pDB4ah28/QkxFaaS61+NNySVEp+xgclMYieAKamtkBBmSBNu3ychZX+w9fZ6EtkLj4 G29VUyglqbNoK1Ak8nGfO4mZg4lx9WFad0XjN9QwFfw4qhqs3ywINFvJxb4G1oz1E21O fXTDSwBjTRfd3cg29b3Pu2llpKdp6rPvBdMSemntQpZ+P7KHAnWU/pEucOOU2LuQ86Sw IzbwItDE/ifX7XMjUrciOSiKoRqFj0eQ+wK/mfCss7Vkf6CwPXaganJQASNNZ4Hzc6QT edGMz19GMRVEJvQXfCiRu/uZZxeGFly/9rm5ZOwxldNWNITzg0917m5bJEdTBWvLA0jZ Dz4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743174922; x=1743779722; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rZ/A5NQVl/i0LPvXyGUfZOVhC0YHLCb1cbCkUXx5q1Y=; b=LErDWMpzdSQ+f6LWAQEXlE7Q457P+mRiXpKCaAVeRgX8yngFuljhgOdVqVWRGVH3ae fpwB7iBvNE/huvUwK/BAzdQuVqYrZW/TIjogGBbztaDsoLT9XJ2QnAxKImJVFzhVdBd2 vLZ2ywDfyMYfY4aCgsgFNablTgw4AD1xDK9onUxN8g5Dn6n+8tMRd0liNUhsXUn2bzbH 1PqhKr0vxz/iTNbKzxLOU4IGV51cDbjtQLUovQPzMmr+rs2nB9uizKShQmrgs4r7dAi0 CvslygVY/8Q5zQgSIROfgUrNcHLkMFaO+MAiv/jAu5nzM0b0fqufd2q3mYywF3urt3dZ qAQg== X-Forwarded-Encrypted: i=1; AJvYcCWME8bk0QIoAVrgEzp3graEZetMyPvBDtbP6CpbjSfaU3Uk/Gtkn8zoetfJXTtjWOJuT+fAYWZmvxuX2XecUnTU@lists.infradead.org X-Gm-Message-State: AOJu0Yxulk+GU2qNO3vjksOeWH+vmEO+xN6ieqzkteRws3IBBJ1N+9bs UpOO20Hts1WR2/cKIyR4GQYOd1awBMaoDHl9bWLnKE088W2M2wpkf6bsVFbkGKk= X-Gm-Gg: ASbGncvFtYkYZCPZj0/17/ShnRXpSuwJ5fokplhBEwJ0spvUWIXN1wX8aQsL0mSpK6K 8s5WoFDNgnHGKibi4c5ARbavzV3oxI0qKcgahsH98+8aVRq/JqCeGseAKMiVli+4RTspq26iE7d Ks6Eipzosua9Q0kMobURVBEAXbY06kGQJhkC903G+Qs2bK0VAu73uKY5z/XzNXdyGPm3TFTUHg0 CR+F0F00V4y3f8MMJlYdukB+NA6rq+GgOfkCEW1mJgAwmxtVr7eefWriWtbXrRjWVEG6N/p1ujc 8lHIDKSo1v/YaQty3n+8pp9SBTW7DxLvz4lqS/QOKvKQsIC3NbVqOXIYHbgYtCwNIoWUiBpZeVn T2QgAmzq9Lj6UsglpiS5QA4Rm1YLB X-Google-Smtp-Source: AGHT+IF/SAGXajaIJE2fIq4KovdnKXhHLZoUZ8JDIQJu039BLgAJUBx5iZLh2HzQlSqeRVtqSuVgwg== X-Received: by 2002:a17:907:96a5:b0:ac3:8626:607 with SMTP id a640c23a62f3a-ac6fb122244mr749440766b.38.1743174921576; Fri, 28 Mar 2025 08:15:21 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71927b742sm178789266b.65.2025.03.28.08.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 08:15:21 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 28 Mar 2025 15:15:19 +0000 Subject: [PATCH v4 1/3] dt-bindings: power: reset: google,gs101-reboot: add Google GS101 specific reset MIME-Version: 1.0 Message-Id: <20250328-syscon-reboot-reset-mode-v4-1-77ba57703ace@linaro.org> References: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> In-Reply-To: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> To: Sebastian Reichel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Will McVicker , kernel-team@android.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250328_081523_558339_87D76A40 X-CRM114-Status: GOOD ( 13.36 ) 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 GS101 supports a couple different reset types via certain registers in the SYSCON register map. Add a binding for this. Signed-off-by: André Draszik --- .../bindings/power/reset/google,gs101-reboot.yaml | 32 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 33 insertions(+) diff --git a/Documentation/devicetree/bindings/power/reset/google,gs101-reboot.yaml b/Documentation/devicetree/bindings/power/reset/google,gs101-reboot.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cbd0a1d9b45af0cb994d616c56b96440c43ab971 --- /dev/null +++ b/Documentation/devicetree/bindings/power/reset/google,gs101-reboot.yaml @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/reset/google,gs101-reboot.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Google GS101 syscon-mapped reset + +maintainers: + - André Draszik + +description: + GS101 supports a couple different reset types via certain registers in the + SYSCON register map. This map is retrieved from the parental dt-node. So the + gs101-reboot node should be represented as a sub-node of such a node. + +properties: + compatible: + oneOf: + - items: + - const: google,gs101-reboot + + priority: + default: 192 + +required: + - compatible + +additionalProperties: false + +allOf: + - $ref: restart-handler.yaml# diff --git a/MAINTAINERS b/MAINTAINERS index 322ee00547f6e494a96d2495092f72148da22bd0..e27f5e672bc5a04777afd098355898654654659d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10080,6 +10080,7 @@ L: linux-samsung-soc@vger.kernel.org S: Maintained C: irc://irc.oftc.net/pixel6-kernel-dev F: Documentation/devicetree/bindings/clock/google,gs101-clock.yaml +F: Documentation/devicetree/bindings/power/reset/google,gs101-reboot.yaml F: arch/arm64/boot/dts/exynos/google/ F: drivers/clk/samsung/clk-gs101.c F: drivers/phy/samsung/phy-gs101-ufs.c From patchwork Fri Mar 28 15:15:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 14032212 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 E3B03C36016 for ; Fri, 28 Mar 2025 15:54:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=QbMd9XdkWBLdkj8rOcFnOleEDKh/N4y+bdq1J1Qswv0=; b=rmIcsdb7X+dYYHI1h8B87Et78p lHppIa2nQ+l0rSnsEJVBQCVxUbbUSS5Et9ZxHa4WH6G8XuJiG24GIEGvGWQFiU5OKPbKp2IFDpvjV 1Xixzc3ZIWbRM8bwrMm+jPMB/Ncu6fcBrN2IHZH9WEsTeUWo3UEWU7h9AQZ5dvW4pbo7roykf/nRM LXTiJ75kwpSiV0C97dIYCDrBs3VLS/OezFZHeZIES8TJZa6MMIEvPZJ3v1ZW4YSs7xvZqVQaz3+B6 kMCFv+IIXkSB+Bl9EyUD7q4bMyiSSfa9E+jswt/UKzRIGCS7JoQBmFsqKqCUciXGvirNELjbSBTTc RZj+Th/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyC2H-0000000DpA0-3ABx; Fri, 28 Mar 2025 15:54:21 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyBQa-0000000Djjd-0FLp for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 15:15:26 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-ac29af3382dso361636166b.2 for ; Fri, 28 Mar 2025 08:15:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743174922; x=1743779722; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QbMd9XdkWBLdkj8rOcFnOleEDKh/N4y+bdq1J1Qswv0=; b=mGeDilX8Z/YHpkp7HmMYGoW5pamWTh2WIRYTHtxwol8KXNPtj+3ZIeqJBam9Cn4RTg nJIH4TlaEevJ+r6KwXPDblb7XTPtqmfV2edDpYJrLKgLPmzCrHA95wwXL3c7B+vkc10b xHmohwzUx4ClvbnkBYnrM7ZuJfFrXE0f7TiHdcMMQMD0k3xSgqpMSqfJbi+DQ4+DPD2M KPFp1cFz1u/M/PvOy2EZ9PZLk6NdIdLkTX0iPIYPaMFGkcj0npZT1MvMlXcYx7S1Sbm5 xG02oTFuzIc0wnch1ZsCzVhYi2ZhNNW8WOu93CXLImQUU3FRmQPgUogqZpUJq3bc3knE OCGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743174922; x=1743779722; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QbMd9XdkWBLdkj8rOcFnOleEDKh/N4y+bdq1J1Qswv0=; b=wB2fBQi2h2GBpWh3Rz/uqlO3k2dcThQtslxYGSamq79FdUxzYPp0hTgBzSvmqp5sQo RVF1ItgdmW2gp9Viy3F9lh/fXUrCic9ZTHl670n7J710jThiZKtUiNzCKeiDaMIKYK2g M52DDibphi6fWAGN98Qwl/vaJCFXN68zDYycij2nqXt3lRsjBQoVBgchTw49VD1/t/Fa 5AC2cvaF2l4q0EgbElx9HXY/wj2WXe5r3IhEgA87QAYIE/2tCXIyhnQVI7n3trOE4WFb r4c2M6T5b6WU6FOl4dLAz8/fZC/hSLecwHOVRUA3yD7f8/evesfh2X7Mwo19HTTqk9Yh ydaQ== X-Forwarded-Encrypted: i=1; AJvYcCWKST7/aGnW9foqgzhhE9lkRdhLjre48TErkgOQKT6Whee3cimckJSIDPTHgwEmgSa3zysT+Z0neUdUHvNuhR+O@lists.infradead.org X-Gm-Message-State: AOJu0Yw0tjuLHCVlkLRBCPe5trkcox3/vT9UdaeHoUEyWqR/8uQlo2Wi Jd4BskJxpHCjLC3bZ3aQ3djqy2guYWg7XOvRrK3rIPS+PNpdG3Nh71haBSkiyeo= X-Gm-Gg: ASbGncty7/9SK9JHQ3/2KO3puZI9skTE2EyV7hHT8OINRcqkp1ZMEvilK9lq3U4EqU3 e6bmZq30hlI1yN465bQrpaUEYdcOwX0IXoYp6sMo2AubxhruvaeDHk4LHvSPFALIO+cTZZ0p+U/ KkIlXVR2C68epjdlN8+zfuhXGLSVMCnRoa9aro0FjnSJeWaOiHxhBY9di6SB78vS6mEvhLYbGfC lTUpXnT+dDWPXTeELC1CM5d+M2yKZf68oVOIkqmd7RvSK8y60p73dQzSw9g8UgDW9cW2Owj4Nfb 05AzFqkMQjDt1q5hc3zKVbLzeg62uDuMp/LRDbHCPwcGYNg8XzlNgZgcRbitCZeG7XgXLD7eLFV qDBz10PuM7427mQfvznwKDmxcJp7M X-Google-Smtp-Source: AGHT+IHlWUcyOlOhaiUcfzknimHxQgiCSYmuaKhmBSK+QhakuXA6Sp7y7IZq0RbnF2cO1nyQaKeRzw== X-Received: by 2002:a17:907:971d:b0:ac4:3e0:7ca3 with SMTP id a640c23a62f3a-ac6fae9bf5bmr718303266b.18.1743174922099; Fri, 28 Mar 2025 08:15:22 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71927b742sm178789266b.65.2025.03.28.08.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 08:15:21 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 28 Mar 2025 15:15:20 +0000 Subject: [PATCH v4 2/3] dt-bindings: soc: samsung: exynos-pmu: update reset for gs101 MIME-Version: 1.0 Message-Id: <20250328-syscon-reboot-reset-mode-v4-2-77ba57703ace@linaro.org> References: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> In-Reply-To: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> To: Sebastian Reichel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Will McVicker , kernel-team@android.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250328_081524_111994_D6A5E2A4 X-CRM114-Status: UNSURE ( 8.32 ) X-CRM114-Notice: Please train this message. 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 Add the gs101-specific reset node, allow it on gs101, and disallow it on !gs101. Similarly, disallow the generic 'syscon-reboot' on gs101, as we want the specific one in that case. Signed-off-by: André Draszik --- .../devicetree/bindings/soc/samsung/exynos-pmu.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml index 204da6fe458d2d4bfeee1471ebc5c38247477ae2..8c7362cf3eeab11f6bb13a27eb295d5ee6721b71 100644 --- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml +++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml @@ -97,6 +97,12 @@ properties: $ref: /schemas/phy/samsung,dp-video-phy.yaml unevaluatedProperties: false + gs101-reboot: + $ref: /schemas/power/reset/google,gs101-reboot.yaml# + type: object + description: + Node for gs101-specific reboot method + interrupt-controller: description: Some PMUs are capable of behaving as an interrupt controller (mostly @@ -136,6 +142,21 @@ required: additionalProperties: false allOf: + - if: + properties: + compatible: + contains: + const: google,gs101-pmu + then: + properties: + gs101-reboot: true + syscon-reboot: false + + else: + properties: + gs101-reboot: false + syscon-reboot: true + - if: properties: compatible: From patchwork Fri Mar 28 15:15:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 14032213 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 C9C05C36011 for ; Fri, 28 Mar 2025 15:54:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tSsT7QLwFrGtJXgYzLTDttFLB1HtTy9nHcX9oWhHWK8=; b=N0DZR1LfkFW1CKa/I/GBoNT40t rnrt9WmqgJHqdXdEENd1OjKI7pWS9TmxMsy6rI8XlAhhN4UwGCrnpvapfXgGm53e6ldkLb2sH7gEa P7xW41ZS4ugJGDLMdV5qqwKRru7W4Rynx+P3GcpUaDT76hOpfVuoZR7cy6aVNmxqgu8GD9ANPczvO uCjlIrRURAPkiacsJnxGyHcTZPXWOAj+KmxJYH98/pUaiFxzZropjJSqk+PJxPG+Ys2QhGZMXWxuF znxZL8BjK97/nXR7m1Mn7tgy4vU6T0RHLDD8DEondJo6FgdQ4OiJKCCuqDSxvrGfmSe8HaUB4G4Cx m1/wtjEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyC2I-0000000DpAY-1Z35; Fri, 28 Mar 2025 15:54:22 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1tyBQa-0000000Djkc-1KKP for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 15:15:26 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5ed1ac116e3so3864609a12.3 for ; Fri, 28 Mar 2025 08:15:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1743174923; x=1743779723; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=tSsT7QLwFrGtJXgYzLTDttFLB1HtTy9nHcX9oWhHWK8=; b=vNMgoBmU6EVPLnqZhYyNa7AWKXbqAM522IKGDdx41QAYvhjlUpwnZh2hBYH8BaL8BF pWPnmcTL1iRIVsP5rb1V3LDfZdbwHisG6sqw2hd31KCmCWiSK/VVqaKf6o0UKC4+bgMa 4sUHjmMakbKvQrigYtAWV2r8eMEXBHwizon9x/9heiyyD1vWipLVP9Y6abrg59/XPxu9 jZ+0i7rCPSJoHyzF8SxwF1YlA254wt3cPXjavb9BDmCcc1xGkBE8a5tmRbtMzbW8r3LW U+z4T2RIM1u4ye+14jX0qWDoQweaiVfS+7fh3tyTSwRzIjvuSQH+dDc3ZJDQ9bAtWMHP jX+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743174923; x=1743779723; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tSsT7QLwFrGtJXgYzLTDttFLB1HtTy9nHcX9oWhHWK8=; b=kKLrDHD4tflzUOcN7bWdXws/bysRbkETdERCSFGyte1JpwVePglG+CpPW+ZYfgf+AP 5lho/m8ySLi3+uKUvMM9vyiIbRiYakiVCXIy7b/F6Xh5+aAyz2jZA4XdjdWg9dDTzbG5 /yc52roSXi0Ti9AoFnh7rxWd6mT/Sma+ZJTZt614w3eMQbshMU7BjP01qSI4O0fEwvWQ NiFjI31ApWxJZc67cKhB/O6zyeEbzGvf/Q2HQ8JjPY1iCRC9GYm0cv54ALJ4t7+/cHVS dN8Rugk8gZlnlNJCyyAxvd4uFKAWetfYieCJzF+OGRze7F5WwPYscXCmqKlO929AuN+b eTEw== X-Forwarded-Encrypted: i=1; AJvYcCUx1/+C+0PTDia1Lsqgxw+DXYfjG5KOqS4QSCD1FIITfa2eKj35jB4Q9wgC6+hN5tjleRzcNeNX7yMc8h+bq+pY@lists.infradead.org X-Gm-Message-State: AOJu0Yzllx6LkBueogKy7rl9d+WA8aHUEU1VS6xxDKtlOFNDzgO52AO5 PGCKAuYcxNpf72BK6KZgmFJSuzxJo/V6v6rv/Urj7PPZgJPOqMWR4XXzQtbuDUM= X-Gm-Gg: ASbGncvkFNzCMqoQGjMTcPSPFRNmHut+v3mVpFyceXHXep76aEIJ6URCgkHuTJZnmtj l/rljgvjRZMLHR9OFo1sAPWPBovHRsWyrGJlWr2IhhArFiODKXIHCeVt7dXV5zEUKbaNrrVpWE5 GA01oGJSPr4lkCrKHB+ICmIFgirnhApFvEHd1OtwbmCYRb/DZ3f8n3GGPGKU5MI+YqAgJ2bLsLs QsMD9Ou/cNTA/59N7zCelUyB4YXWAAONhzF/G/GU7wQPzQ4EJoeqeeaO+bRdLnRWvKeGL4L+B+s uMGK36lctyfAt7fL8R2gDG4o/+CPrQaIYgXZsFk4gYNjONck6sKvolV0UEL9NOxcSMPuSVXI5In RLID3VmKN8pKhJq5lf86CBtdfeSz1 X-Google-Smtp-Source: AGHT+IEWPzD/U+QVIvLgLhOsjJHdSVScC1Inq2Efi46czBnZaUtFyAtnrEbdytwYUOnTSrDbDskAIw== X-Received: by 2002:a17:907:868c:b0:ac4:169:3664 with SMTP id a640c23a62f3a-ac6faf04132mr673143566b.33.1743174922634; Fri, 28 Mar 2025 08:15:22 -0700 (PDT) Received: from puffmais.c.googlers.com (8.239.204.35.bc.googleusercontent.com. [35.204.239.8]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac71927b742sm178789266b.65.2025.03.28.08.15.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Mar 2025 08:15:22 -0700 (PDT) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 28 Mar 2025 15:15:21 +0000 Subject: [PATCH v4 3/3] power: reset: syscon-reboot: add gs101-specific reset MIME-Version: 1.0 Message-Id: <20250328-syscon-reboot-reset-mode-v4-3-77ba57703ace@linaro.org> References: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> In-Reply-To: <20250328-syscon-reboot-reset-mode-v4-0-77ba57703ace@linaro.org> To: Sebastian Reichel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Will McVicker , kernel-team@android.com, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250328_081524_376603_F9040703 X-CRM114-Status: GOOD ( 21.18 ) 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 Linux supports a couple different reset modes, but this driver here doesn't distinguish between them and issues the same syscon register write irrespective of the reset mode requested by the kernel. Since DTs should not encode register writes (see e.g. [1]), update this driver to support different reset modes based on DT compatible match. At the same time, add support for Google GS101, which does support cold, hard, warm, and soft. As an example why this is useful, other than properly supporting the Linux reboot= kernel command line option or sysfs entry, this change allows gs101-platforms to default to a more secure cold-reset, but also to warm-reset in case RAM contents needs to be retained across the reset. Link: https://lore.kernel.org/all/20250227132644.GA1924628-robh@kernel.org/ [1] Signed-off-by: André Draszik --- drivers/power/reset/syscon-reboot.c | 98 +++++++++++++++++++++++++++++-------- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/drivers/power/reset/syscon-reboot.c b/drivers/power/reset/syscon-reboot.c index d623d77e657e4c233d8ae88bb099bee13c48a9ef..2e2cf5f62d733c7c07110f3052583607e25afd5d 100644 --- a/drivers/power/reset/syscon-reboot.c +++ b/drivers/power/reset/syscon-reboot.c @@ -14,11 +14,24 @@ #include #include -struct syscon_reboot_context { - struct regmap *map; +struct reboot_mode_bits { u32 offset; - u32 value; u32 mask; + u32 value; + bool valid; +}; + +struct reboot_data { + struct reboot_mode_bits mode_bits[REBOOT_SOFT + 1]; + struct reboot_mode_bits catchall; +}; + +struct syscon_reboot_context { + struct regmap *map; + + const struct reboot_data *rd; /* from of match data, if any */ + struct reboot_mode_bits catchall; /* from DT */ + struct notifier_block restart_handler; }; @@ -28,9 +41,21 @@ static int syscon_restart_handle(struct notifier_block *this, struct syscon_reboot_context *ctx = container_of(this, struct syscon_reboot_context, restart_handler); + const struct reboot_mode_bits *mode_bits; + + if (ctx->rd) { + if (mode < ARRAY_SIZE(ctx->rd->mode_bits) && + ctx->rd->mode_bits[mode].valid) + mode_bits = &ctx->rd->mode_bits[mode]; + else + mode_bits = &ctx->rd->catchall; + } else { + mode_bits = &ctx->catchall; + } /* Issue the reboot */ - regmap_update_bits(ctx->map, ctx->offset, ctx->mask, ctx->value); + regmap_update_bits(ctx->map, mode_bits->offset, mode_bits->mask, + mode_bits->value); mdelay(1000); @@ -42,7 +67,6 @@ static int syscon_reboot_probe(struct platform_device *pdev) { struct syscon_reboot_context *ctx; struct device *dev = &pdev->dev; - int mask_err, value_err; int priority; int err; @@ -60,24 +84,33 @@ static int syscon_reboot_probe(struct platform_device *pdev) if (of_property_read_s32(pdev->dev.of_node, "priority", &priority)) priority = 192; - if (of_property_read_u32(pdev->dev.of_node, "offset", &ctx->offset)) - if (of_property_read_u32(pdev->dev.of_node, "reg", &ctx->offset)) - return -EINVAL; + ctx->rd = of_device_get_match_data(dev); + if (!ctx->rd) { + int mask_err, value_err; - value_err = of_property_read_u32(pdev->dev.of_node, "value", &ctx->value); - mask_err = of_property_read_u32(pdev->dev.of_node, "mask", &ctx->mask); - if (value_err && mask_err) { - dev_err(dev, "unable to read 'value' and 'mask'"); - return -EINVAL; - } + if (of_property_read_u32(pdev->dev.of_node, "offset", + &ctx->catchall.offset) && + of_property_read_u32(pdev->dev.of_node, "reg", + &ctx->catchall.offset)) + return -EINVAL; - if (value_err) { - /* support old binding */ - ctx->value = ctx->mask; - ctx->mask = 0xFFFFFFFF; - } else if (mask_err) { - /* support value without mask*/ - ctx->mask = 0xFFFFFFFF; + value_err = of_property_read_u32(pdev->dev.of_node, "value", + &ctx->catchall.value); + mask_err = of_property_read_u32(pdev->dev.of_node, "mask", + &ctx->catchall.mask); + if (value_err && mask_err) { + dev_err(dev, "unable to read 'value' and 'mask'"); + return -EINVAL; + } + + if (value_err) { + /* support old binding */ + ctx->catchall.value = ctx->catchall.mask; + ctx->catchall.mask = 0xFFFFFFFF; + } else if (mask_err) { + /* support value without mask */ + ctx->catchall.mask = 0xFFFFFFFF; + } } ctx->restart_handler.notifier_call = syscon_restart_handle; @@ -89,7 +122,30 @@ static int syscon_reboot_probe(struct platform_device *pdev) return err; } +static const struct reboot_data gs101_reboot_data = { + .mode_bits = { + [REBOOT_WARM] = { + .offset = 0x3a00, /* SYSTEM_CONFIGURATION */ + .mask = 0x00000002, /* SWRESET_SYSTEM */ + .value = 0x00000002, + .valid = true, + }, + [REBOOT_SOFT] = { + .offset = 0x3a00, /* SYSTEM_CONFIGURATION */ + .mask = 0x00000002, /* SWRESET_SYSTEM */ + .value = 0x00000002, + .valid = true, + }, + }, + .catchall = { + .offset = 0x3e9c, /* PAD_CTRL_PWR_HOLD */ + .mask = 0x00000100, + .value = 0x00000000, + }, +}; + static const struct of_device_id syscon_reboot_of_match[] = { + { .compatible = "google,gs101-reboot", .data = &gs101_reboot_data }, { .compatible = "syscon-reboot" }, {} };