From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58F1830649C for ; Tue, 14 Jul 2026 17:17:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049423; cv=none; b=ny8ejfhuBZd/muxkWuqx1b0FZL9K1+4l5Fb7pBye5n8UCRXAmycU2+Y5mQM/KronXcVsZWDQJrpPOSKZJQLKHj2v7F+BUagG2tdv/l4MriKmHeh8lc4iR7CkORfed3ND8IqCovApKAKJAug0vyx1xIbQcDv2wB0Rj7TAzAHjS64= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049423; c=relaxed/simple; bh=/IxZw+rPFwV39zq+p6TpSHd4rD601RR4H9Jp0jIyzsk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V8sJ4ObaeYziK/9Jpf9E720IV7O2J/cpp/4E6HQpXJ8iYsnK3NSP8/3wDShttRh/uXx9TATBgqEyq2OHdJEpeScCxvS2xg1s9vdXErBpzX21p49xG9EeA4aHQP1OzCR8S3Ku8PL0zt17KKiLqXmfbb5XmPObasLkv/74BFXo9gg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pQRQxA+/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gyfzShLk; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pQRQxA+/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gyfzShLk" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6uWb1003536 for ; Tue, 14 Jul 2026 17:17:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= icPHz4GNOy1/1gIz+yOBY3gb4ZMu3uYYLdHZrFuqdC8=; b=pQRQxA+/1t/wHLtp 9bH7qrghD7GWtYyd9/rP0xceQn03HfHHxwiReLYufo6O1c6lp/JoD801sHtZ8N8M eCDc9vRoIJCAO8bGYEZLUzaNM8PSbpLYzjgZVomAHZeYv5VMH/Xt1b8WwPasbGDk yOWEjTUkG+IJ6+DxBPgjkVAbS0ArwGpcZRwy7+90saDzN6TA9yGHDZ1vfiKzFgu9 jbiLv8Vw7LwANZ797B899Bh07TFr3HOT1lvxflM9YoNeuYx51zMUuYOeGc+Tv/x5 Bvqsy2ssn87mR2JOQ6cSXHYvPg47uvT/pP8dSeHR1p+5K2Afo7cZHCbEN9GLPvY2 iEgeeA== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdnnr139b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:00 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84859a64079so8226990b3a.3 for ; Tue, 14 Jul 2026 10:16:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049419; x=1784654219; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=icPHz4GNOy1/1gIz+yOBY3gb4ZMu3uYYLdHZrFuqdC8=; b=gyfzShLkt33ffA492CKvj/nHgcxx9a/tlkHMIYO2IzJ4y1bhNBZxPrcwcf+APy6VMJ Jrl8mE5R0AzXCucXmPyxMBIcyJQWi4LSw3zKv5QANzvVlwmkL6d9+QoUbHai/12yXx2J baTiBuat2vPCcln9VY8VjdG6ytTZrf2JKmzbe4uh2DP/p2/NPz2hiQu1q4/Cv2KTGt8q cBG/ilv2R+FMUwqyTOchFpmLSuyFV7a2MYihXnF8ou3w0Eal8ICTOdZsNubO/w8jVCuU V78+rEvZiq8F5ZvhtIkN1jrMAZH+RV5Xo+D6VqUI3Oq+QIn5rjVvzsubwKnzQLrfAA2E A4rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049419; x=1784654219; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=icPHz4GNOy1/1gIz+yOBY3gb4ZMu3uYYLdHZrFuqdC8=; b=ZdCsaXBEiS9qMFmvLhkLz0B4d73UQTcpO84VetTbL0lzOcPSMb7+MDpHHCjQvMYSK8 AJCmS4tY5tgv7S0GtH2chOa6h2Fjk5xQew0UgRLfUY9yrZqEWthBsU08G1cju2j6CfqI QwNzVPY/Op/KJsZBwEjX70iE3BXIPHW3aGcIeLr7OpYtady61rIWtLIt8+IN98rm6B9W rF851vZaDqInrxsGztIT1xeruVe8wf442CnzlTXaZmD91BSE0lIY9sYAmV+R2oCYMXH8 Ntf9xCcwadaEHQ66fw7yAjMPFIXHXnqZTD83QLVVWVvDwN9IIMSEHvdP+JYypytctV6N qFfQ== X-Forwarded-Encrypted: i=1; AHgh+RoYOVfFd0UTtZ05jo4Ueb0dXli8OT7hzOx179sL/mDHtEcU+dwlH0Q2ODUwskuh7cy8fNwZDN9LaA833Ts=@vger.kernel.org X-Gm-Message-State: AOJu0YwGgquXW+xrR7P6YDa8Hg8B3XrTQiPcgZQ4RNKqkvoSm+3GqHTA zK6xDT4dU0o6nEYRC0qiZYlV+LZCItqCxr3NOArA0hWD78cXEGQk8kSE/QsIE3bmjSgtjrKImMT KKx35lBTL07AOx7OVbHAFGuDxoUPSORdN290szuu3lVJV9qyrsmo8yiIsvmwvGzM6KPg= X-Gm-Gg: AfdE7cmPUgIDSSzd5p+RaDtT+KHFb8NeyqUKkX2op2cydwXuNiVgWBQG2wYQKKJzMGJ OAqsjMt6+jO/XvwoqGsXwPigaby7ashlqZpRcMyfMKJpRYCr/v8SI5iBC1br0qd04Vlcl2czrXM qv2OOrr2bfExgnPTSrAgjR5Maf4ASiYc8X+Qiq151flcqzFlwhpi71PBmBqO7YS/z2oncppP8t3 yvmO/bHKSRJivMld1s/X3llZpbWH5z0TrOe0HGYeQ/lcU62EES4sTafVL8KqhC/l+ocn/H9R4ia fYj9LEANpP3p59jYfunNOC2WruDfV8Dp9Qg8MiSRFTE+PxFLyDqfmqlJy2AVXKOjRN0+u1DDYP4 IuLfvWr1auVmv/W7ANydCIxA66zvQaaTESCI6lplCqDdLwdU= X-Received: by 2002:a05:6a00:b8d:b0:84a:2d58:15 with SMTP id d2e1a72fcca58-84a559b1b01mr3517988b3a.57.1784049418851; Tue, 14 Jul 2026 10:16:58 -0700 (PDT) X-Received: by 2002:a05:6a00:b8d:b0:84a:2d58:15 with SMTP id d2e1a72fcca58-84a559b1b01mr3517967b3a.57.1784049418391; Tue, 14 Jul 2026 10:16:58 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.16.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:16:58 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:29 +0530 Subject: [PATCH v23 01/13] power: reset: reboot-mode: Remove devres based allocations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-1-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Sebastian Reichel , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=3945; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=/IxZw+rPFwV39zq+p6TpSHd4rD601RR4H9Jp0jIyzsk=; b=FOkQfPXWoK1qKl0kI0Ie+LmI64jVoDcFZgWGS8EMP1eqQh+aDqSNIUpOAP/s/w438Ry6H1wC6 tPpdm8vhetwDWabHr8DUbmoiap1etgE61m9idry1GmUboP18+EMoF3E X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX9SOG0CC8U1GZ baWbH7p3fmcf9Q/Nsl1M4BsMA1ovR9gGzmFmuHR8gusXpH/+BzFDEOtidRfxHe6sTP3j02gUCP4 IqvDp/6KoQKgeVSvyd+9T9kZkihYhpg= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX2Cv8rMkH7/C0 Zgd1NyBvd0/6rgJXSUybUKDmJjeLyjD4MVp1cJoJcjuItLA4s9ju2AbcqnpV7j1gP7jnqEthHsu 0F5DgHCzYtq6Jnh+cmNHqzDKoMVBJXaPRw/MBCo32J2gGzwNortgojqvLsD+H1tkoSMktqT7Z0o iY+F94RZJ/U0EtuGVhmUDSSydIK2+HD0a7daBTdCZA9oEziXXDqu1goP+mPDcwesYjkSOtWLr9D aEGqtJM73yYIB6CXkiOZovsjbFgfU/D9P1p1SkPsYvOslbbdFRrmXtkBio7WwU64uKydOR0CR1N OBv/l91LyXNGWBNegqG5PRUieDHyI/uukECJPaqir+1d8os/uh8DI0I9Xyl2jaWjVnY78a5pmbE whfop/hXWaP5yAiZ15kSothqJ91aLPtIfTU/X1VR53Q5kOF6ORrXxHjblDkxCh6CtzEnIjoFoSI 4yUpzITuzfPncrE0yyg== X-Proofpoint-ORIG-GUID: wSu6_MucAWEICtuTK89uAlRQDFiTcMh9 X-Authority-Analysis: v=2.4 cv=NfPWEWD4 c=1 sm=1 tr=0 ts=6a566f0c cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=QX4gbG5DAAAA:8 a=EUspDBNiAAAA:8 a=QIdouwm7mKRySFGJXRQA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 a=AbAUZ8qAyYyZVLSsDulk:22 X-Proofpoint-GUID: wSu6_MucAWEICtuTK89uAlRQDFiTcMh9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 spamscore=0 suspectscore=0 bulkscore=0 impostorscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 Devres APIs are intended for use in drivers, where the managed lifetime of resources is tied directly to the driver attach/detach cycle. In shared subsystem code, there is no guarantee that the subsystem functions will only be called after a driver has been attached, nor that they will not be referenced after the managed resources have been released during driver detach. To ensure correct lifetime handling, avoid using devres-based allocations in the reboot-mode and explicitly handle allocation and cleanup of resources. Reviewed-by: Sebastian Reichel Reviewed-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- drivers/power/reset/reboot-mode.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot= -mode.c index d20e44db0532..7a74f72a8313 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -3,6 +3,8 @@ * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd */ =20 +#define pr_fmt(fmt) "reboot-mode: " fmt + #include #include #include @@ -10,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -168,10 +171,11 @@ static int reboot_mode_create_device(struct reboot_mo= de_driver *reboot) */ int reboot_mode_register(struct reboot_mode_driver *reboot) { - struct mode_info *info; + struct mode_info *info =3D NULL; struct property *prop; struct device_node *np =3D reboot->dev->of_node; size_t len =3D strlen(PREFIX); + u32 magic; int ret; =20 INIT_LIST_HEAD(&reboot->head); @@ -180,19 +184,18 @@ int reboot_mode_register(struct reboot_mode_driver *r= eboot) if (strncmp(prop->name, PREFIX, len)) continue; =20 - info =3D devm_kzalloc(reboot->dev, sizeof(*info), GFP_KERNEL); + if (device_property_read_u32(reboot->dev, prop->name, &magic)) { + pr_debug("reboot mode %s without magic number\n", prop->name); + continue; + } + + info =3D kzalloc(sizeof(*info), GFP_KERNEL); if (!info) { ret =3D -ENOMEM; goto error; } =20 - if (of_property_read_u32(np, prop->name, &info->magic)) { - dev_err(reboot->dev, "reboot mode %s without magic number\n", - info->mode); - devm_kfree(reboot->dev, info); - continue; - } - + info->magic =3D magic; info->mode =3D kstrdup_const(prop->name + len, GFP_KERNEL); if (!info->mode) { ret =3D -ENOMEM; @@ -200,12 +203,12 @@ int reboot_mode_register(struct reboot_mode_driver *r= eboot) } else if (info->mode[0] =3D=3D '\0') { kfree_const(info->mode); ret =3D -EINVAL; - dev_err(reboot->dev, "invalid mode name(%s): too short!\n", - prop->name); + pr_err("invalid mode name(%s): too short!\n", prop->name); goto error; } =20 list_add_tail(&info->list, &reboot->head); + info =3D NULL; } =20 reboot->reboot_notifier.notifier_call =3D reboot_mode_notify; @@ -218,6 +221,7 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) return 0; =20 error: + kfree(info); reboot_mode_unregister(reboot); return ret; } @@ -261,12 +265,16 @@ static inline void reboot_mode_unregister_device(stru= ct reboot_mode_driver *rebo int reboot_mode_unregister(struct reboot_mode_driver *reboot) { struct mode_info *info; + struct mode_info *next; =20 unregister_reboot_notifier(&reboot->reboot_notifier); reboot_mode_unregister_device(reboot); =20 - list_for_each_entry(info, &reboot->head, list) + list_for_each_entry_safe(info, next, &reboot->head, list) { + list_del(&info->list); kfree_const(info->mode); + kfree(info); + } =20 return 0; } --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44E931C861D for ; Tue, 14 Jul 2026 17:17:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049432; cv=none; b=bX6ml6m75UfZVdvnkpHs48qO/7q2Fic9wBdebilmdWNwgvlIPGlMjGvqvDP6iMU7kbW8YJXafAqlj58UUCY7kWKAvzwET9Qs/v6RgYnvc0k9fpWffVivq4DXYxVhB8RBMXViKotOggx7pRTz87sKIVQmkEgo6oTBEtZkAZ1tkQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049432; c=relaxed/simple; bh=RVaPOCf997VpffmwFz5T1csAYPCpvDfat+ouqwNAreI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KtUikTMxWnEJjUuZs7z5byz9RfO7kbbh68yyoFRewC3PeYK/8XVyYxKvEd2N8y1mJkduY+kOz8LBeRXlXDyVP3DHddk0ykcfOxplv/X047zC6X6wyz1t45J1+eL8KIr4nLsLio/DhwigBXLsl7a7gXyOMnWcSURkikJWZse8er8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jacd173B; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=d7Qa6nuN; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jacd173B"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="d7Qa6nuN" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAnq2898670 for ; Tue, 14 Jul 2026 17:17:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= UjSyKzBP4WUNp0FLzrltMMh/GI3GE10855Ym1ouXjsw=; b=jacd173BaaVbPsqW Ai7TTzusn/WkK9YXA2ocjqh/vu3NQqJHzGqwS3TWUJ2bd6BT6OXFeU3o1XR3L4hM 61u9ZwHNpv1rl7N2owTFRtK0XXoB9RD/565tALOJXKRT7ngcWnb/Fw9DS2kGH1vW GBJtKOUpliRKoi4WaLCwMsVeB9cbC0xtrTqi2M7BlFNvE7xU9ugedve+TbjvUnAO WdyfcQ9ZGNhZHl5yjhMHMcAvxgdQGTLocLSNI8Km23vOEUlXIeoi23daxbtYtfjj qID592WNfZJDrSfGhjyIHLnJDEL0fpO509QEWl+61SHpz2Jehw56EZouw+GcwKlv cmm5Ag== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9mg0ry-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:09 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84865f326efso5021800b3a.0 for ; Tue, 14 Jul 2026 10:17:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049429; x=1784654229; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UjSyKzBP4WUNp0FLzrltMMh/GI3GE10855Ym1ouXjsw=; b=d7Qa6nuNxGmvJO+YUAJKQMR8wpPVhQ+Gqs7Xzct/7PaprOZgxJ+dmjxlj8wBq8O+Kd PyHscwhozTeyieU1BZ/NCcPM0pOWy8g5cmcMi2VXjM9M2tEeLsWRObfTKA+nWEZ8atoW d4xvgfRiVykVLmafvNcuJHOl4LJyEyTkKro5HYPI3slFWT7i+MnU97qXpXw2B0Wj+uPU kyLsgqveLFvXgUmdOn+3NigxPgFDBnc5Nbi+cLnz4bcxRtU1IKv9j1Wmb6Eg7vhTc2G4 6+EW+lgLic3LjuafDPmhl/ILBE9xr390/PwvuPQ0DohAxG4kQE+frfiyQASM5n944FTs vsLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049429; x=1784654229; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=UjSyKzBP4WUNp0FLzrltMMh/GI3GE10855Ym1ouXjsw=; b=SKECvl4IDC/vESm6izULLPc697HNxNTsltuZ1CJOr7CSKMooRMYht06wY4CDxpf18U odZ0ODTbmjFSGvSy27nsF1MqWtHGgEjSn36CsHZiHesDM7Prthj0ABXRgLnqGboxhQeu 1DaaujBxDwNSQdIcUxS0CXDAE/3h5qWcmjRdcm/G/vyWSZn80ltJ9as5kOf5QNTT8+3B OdVrAvvoUt134N+NajF3YLa1c9C4Uj2NrbUSMQn7LxR1TQZZi75UoTRwDslJb4nDH/sY RobTEJMuEkKBs78BdnGlIGYx+5Xmdzy78CUK0t3nHtdVoQoqYovx4EIUA98BPJ5PD+1f eT9A== X-Forwarded-Encrypted: i=1; AHgh+RrfQ7wfKQNcrn3s2YLw/IA37AlWgIww0rx0YD4RfsgDAUgEgQGm7ChBRintWOqFRzYff/DIo4cY17ztkPE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0hRLemjxUycioZ5fYh5l7fcER8BXHZKQ+pVbJZl+hXnHKv0lx VDy+Joo+G5tRQV2hEPut6JX2SBPBilI4+2lNUgQvdreb+6kHXS4zTdidBoV//JaXI1QwLL8fQZY ATAQKQSxUP9QeQJMLdAllcAxGoxIkzkwP492bDQ15wIVNRtzUz68MmZy6gBXoNk/qjxo= X-Gm-Gg: AfdE7cnNpCagNl42eNJ1P5rQixPG01542NDtbdk3ufnJ6v6/v6eZqkqDNYTYap7wvru pHprgQTEsT6JpAasTjxZRP7cKogAhexe+x6fj+KabSbvw9fFxFWgRre6r469nOVyqMy92hB88DP MfQN5ZRhkNwSU2uA2rXeJvMsSk9AwuADnqTPwFHcFDey30fxJMZPDBWqGg6BXVR7L9i7EepeW12 gin0v98RSiexkNCs7xuKQnN9YWvoJ9pDC1UbiFe7tBuHGBO9wTxNFxtbG7Syq3emGUSlJTYLmC9 sE48DperMWWRJQWhG5uZZ3lLQz1tV1R8XyzEgOXubwDVY5E03v4KYTEVb/uT3lqUfj1DoxT2rtm pVIwOfNfo27N9+o1R0kttY77EVMK7tMDwWTAtGdH86k46//A= X-Received: by 2002:a05:6a00:98c:b0:846:de21:3da4 with SMTP id d2e1a72fcca58-84889633831mr13028913b3a.3.1784049428408; Tue, 14 Jul 2026 10:17:08 -0700 (PDT) X-Received: by 2002:a05:6a00:98c:b0:846:de21:3da4 with SMTP id d2e1a72fcca58-84889633831mr13028832b3a.3.1784049427878; Tue, 14 Jul 2026 10:17:07 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.16.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:07 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:30 +0530 Subject: [PATCH v23 02/13] power: reset: reboot-mode: Support up to 3 magic values per mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-2-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=7567; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=RVaPOCf997VpffmwFz5T1csAYPCpvDfat+ouqwNAreI=; b=rq4dDcAfNnVyv7NIzjQzhAv7vmit/5zydDQmKBy6uONRaNy+yzNahFgU9SxCoO3u+EjCayaGN XIlYzUBTfKtBFaO1xJPnn+6dynQAV0OeijYDKIJ17V21sDb4RsIfq1Q X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX9jeCJSQuVNFp uidq05xES5xYW13FFMyf+pIEMwW8xqxkwLXQtbLH2KFRJqB7xNDnVMCn8SdFPy/TPijg6hUYLgX kZkuuqzOSIj1M3W/mFXJPo4QujAe2K6vunmaoPNewtP4X/XnzSANQPEucdjlGwPCpD9QJAJ9QHI UddVhI+CSnIA6asK00jUXwqEacKZ73iYzHeRynC9eVJM5d+P0k+Xt5VOp89olAvqvRbQSULmdRT pxcgc/XY6Ho9Ssza9dewQCUGSqNgz3cGu3kSSROxQhFr8K/AJ7vthywcbd364IZxJM5YxqhMyN+ AE8xNKu07TdI4nfuuX2rjW7RkhQpNxARc/5X5GUCWGTFKTjD9rFmaRA0S2KJyQAyvtQWTup1RO8 mf1D8tfy9Oq4rUXUtUJYP7HapCeSH2zE8/8wOySPa4TtYeONHRZEVT5mMzD7J3WH1Nkq3Y2+VRt cspw+jnkIwpanFVpveA== X-Proofpoint-ORIG-GUID: Y8NnJHt7F8FbxxzqD5KZxNc-j8Qldg4P X-Proofpoint-GUID: Y8NnJHt7F8FbxxzqD5KZxNc-j8Qldg4P X-Authority-Analysis: v=2.4 cv=E+79Y6dl c=1 sm=1 tr=0 ts=6a566f15 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=0v6kfwnqDUnfvyonRkMA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfXxjm2hyTfBYgT NwddgtWX1UiNXQuPbh/jYo7/7ksspOdtA8p8opZwLZcRlh/3Z83VbHGH8fwc92w+w1bs0bTjwXA Xfqf2i4Q1R6d7giQ9A5pvk9WwFccNmY= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 spamscore=0 impostorscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140177 ARM PSCI vendor-specific resets, require a 32-bit reset_type and a 64-bit cookie as arguments. This cannot be implemented via the reboot-mode framework, which supports a single 32-bit argument as magic value. Extend the reboot-mode framework to support up to three 32-bit arguments as magic, per reboot-mode. Signed-off-by: Shivendra Pratap --- drivers/power/reset/nvmem-reboot-mode.c | 10 ++++---- drivers/power/reset/qcom-pon.c | 8 ++++--- drivers/power/reset/reboot-mode.c | 41 +++++++++++++++++++++-------= ---- drivers/power/reset/syscon-reboot-mode.c | 8 ++++--- include/linux/reboot-mode.h | 4 +++- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/drivers/power/reset/nvmem-reboot-mode.c b/drivers/power/reset/= nvmem-reboot-mode.c index d260715fccf6..ac69b5f39fb4 100644 --- a/drivers/power/reset/nvmem-reboot-mode.c +++ b/drivers/power/reset/nvmem-reboot-mode.c @@ -17,14 +17,16 @@ struct nvmem_reboot_mode { struct nvmem_cell *cell; }; =20 -static int nvmem_reboot_mode_write(struct reboot_mode_driver *reboot, - unsigned int magic) +static int nvmem_reboot_mode_write(struct reboot_mode_driver *reboot, u32 = *magic, int count) { struct nvmem_reboot_mode *nvmem_rbm; size_t buf_len; void *buf; int ret; =20 + if (count !=3D 1) + return -EINVAL; + nvmem_rbm =3D container_of(reboot, struct nvmem_reboot_mode, reboot); =20 buf =3D nvmem_cell_read(nvmem_rbm->cell, &buf_len); @@ -32,10 +34,10 @@ static int nvmem_reboot_mode_write(struct reboot_mode_d= river *reboot, return PTR_ERR(buf); kfree(buf); =20 - if (buf_len > sizeof(magic)) + if (buf_len > sizeof(magic[0])) return -EINVAL; =20 - ret =3D nvmem_cell_write(nvmem_rbm->cell, &magic, buf_len); + ret =3D nvmem_cell_write(nvmem_rbm->cell, &magic[0], buf_len); if (ret < 0) dev_err(reboot->dev, "update reboot mode bits failed\n"); =20 diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c index 7e108982a582..a508ab26d03f 100644 --- a/drivers/power/reset/qcom-pon.c +++ b/drivers/power/reset/qcom-pon.c @@ -27,17 +27,19 @@ struct qcom_pon { long reason_shift; }; =20 -static int qcom_pon_reboot_mode_write(struct reboot_mode_driver *reboot, - unsigned int magic) +static int qcom_pon_reboot_mode_write(struct reboot_mode_driver *reboot, u= 32 *magic, int count) { struct qcom_pon *pon =3D container_of (reboot, struct qcom_pon, reboot_mode); int ret; =20 + if (count !=3D 1) + return -EINVAL; + ret =3D regmap_update_bits(pon->regmap, pon->baseaddr + PON_SOFT_RB_SPARE, GENMASK(7, pon->reason_shift), - magic << pon->reason_shift); + magic[0] << pon->reason_shift); if (ret < 0) dev_err(pon->dev, "update reboot mode bits failed\n"); =20 diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot= -mode.c index 7a74f72a8313..db2129c72341 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -22,7 +22,8 @@ =20 struct mode_info { const char *mode; - u32 magic; + u32 magic[3]; + int count; struct list_head list; }; =20 @@ -74,8 +75,7 @@ static const struct class reboot_mode_class =3D { .dev_groups =3D reboot_mode_groups, }; =20 -static unsigned int get_reboot_mode_magic(struct reboot_mode_driver *reboo= t, - const char *cmd) +static struct mode_info *get_reboot_mode_info(struct reboot_mode_driver *r= eboot, const char *cmd) { const char *normal =3D "normal"; struct mode_info *info; @@ -86,11 +86,11 @@ static unsigned int get_reboot_mode_magic(struct reboot= _mode_driver *reboot, =20 list_for_each_entry(info, &reboot->head, list) if (!strcmp(info->mode, cmd)) - return info->magic; + return info; =20 /* try to match again, replacing characters impossible in DT */ if (strscpy(cmd_, cmd, sizeof(cmd_)) =3D=3D -E2BIG) - return 0; + return NULL; =20 strreplace(cmd_, ' ', '-'); strreplace(cmd_, ',', '-'); @@ -98,21 +98,21 @@ static unsigned int get_reboot_mode_magic(struct reboot= _mode_driver *reboot, =20 list_for_each_entry(info, &reboot->head, list) if (!strcmp(info->mode, cmd_)) - return info->magic; + return info; =20 - return 0; + return NULL; } =20 static int reboot_mode_notify(struct notifier_block *this, unsigned long mode, void *cmd) { struct reboot_mode_driver *reboot; - unsigned int magic; + struct mode_info *info; =20 reboot =3D container_of(this, struct reboot_mode_driver, reboot_notifier); - magic =3D get_reboot_mode_magic(reboot, cmd); - if (magic) - reboot->write(reboot, magic); + info =3D get_reboot_mode_info(reboot, cmd); + if (info && info->count > 0) + reboot->write(reboot, info->magic, info->count); =20 return NOTIFY_DONE; } @@ -175,16 +175,22 @@ int reboot_mode_register(struct reboot_mode_driver *r= eboot) struct property *prop; struct device_node *np =3D reboot->dev->of_node; size_t len =3D strlen(PREFIX); - u32 magic; + u32 magic[3]; + int count; int ret; =20 INIT_LIST_HEAD(&reboot->head); =20 for_each_property_of_node(np, prop) { + memset(magic, 0, sizeof(magic)); + if (strncmp(prop->name, PREFIX, len)) continue; =20 - if (device_property_read_u32(reboot->dev, prop->name, &magic)) { + count =3D device_property_count_u32(reboot->dev, prop->name); + + if (count <=3D 0 || count > ARRAY_SIZE(magic) || + device_property_read_u32_array(reboot->dev, prop->name, magic, count= )) { pr_debug("reboot mode %s without magic number\n", prop->name); continue; } @@ -195,7 +201,14 @@ int reboot_mode_register(struct reboot_mode_driver *re= boot) goto error; } =20 - info->magic =3D magic; + if (!memchr_inv(magic, 0, count * sizeof(u32))) { + pr_debug("reboot mode %s with zero magic values\n", prop->name); + info->count =3D -1; + } else { + memcpy(info->magic, magic, count * sizeof(u32)); + info->count =3D count; + } + info->mode =3D kstrdup_const(prop->name + len, GFP_KERNEL); if (!info->mode) { ret =3D -ENOMEM; diff --git a/drivers/power/reset/syscon-reboot-mode.c b/drivers/power/reset= /syscon-reboot-mode.c index e0772c9f70f7..983b1fbf614a 100644 --- a/drivers/power/reset/syscon-reboot-mode.c +++ b/drivers/power/reset/syscon-reboot-mode.c @@ -20,16 +20,18 @@ struct syscon_reboot_mode { u32 mask; }; =20 -static int syscon_reboot_mode_write(struct reboot_mode_driver *reboot, - unsigned int magic) +static int syscon_reboot_mode_write(struct reboot_mode_driver *reboot, u32= *magic, int count) { struct syscon_reboot_mode *syscon_rbm; int ret; =20 + if (count !=3D 1) + return -EINVAL; + syscon_rbm =3D container_of(reboot, struct syscon_reboot_mode, reboot); =20 ret =3D regmap_update_bits(syscon_rbm->map, syscon_rbm->offset, - syscon_rbm->mask, magic); + syscon_rbm->mask, magic[0]); if (ret < 0) dev_err(reboot->dev, "update reboot mode bits failed\n"); =20 diff --git a/include/linux/reboot-mode.h b/include/linux/reboot-mode.h index 4a2abb38d1d6..34a81e4b4f95 100644 --- a/include/linux/reboot-mode.h +++ b/include/linux/reboot-mode.h @@ -2,10 +2,12 @@ #ifndef __REBOOT_MODE_H__ #define __REBOOT_MODE_H__ =20 +#include + struct reboot_mode_driver { struct device *dev; struct list_head head; - int (*write)(struct reboot_mode_driver *reboot, unsigned int magic); + int (*write)(struct reboot_mode_driver *reboot, u32 *magic, int count); struct notifier_block reboot_notifier; }; =20 --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 788BC3019C3 for ; Tue, 14 Jul 2026 17:17:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049442; cv=none; b=b2To7M+x8I49vRIaankHCELvZ+xjMi06InZ4mQS5c5lFnBbSYqLa+Q4ui6EMbaPZ8ifAeIKnqtY5aYXVF+78nZuc7Rzbk2m6enORvz39hS8iuVFqcF8jgfHAHc6GHolXV0u4eo5C7PnA/WOmx/iYN0/NbcQP0tRaAcWEVm9r5Nw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049442; c=relaxed/simple; bh=ArDByZmc9csepA9CgZHxb5udyEDuHBpra4BchbwKAAw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=INp/BlqQWXp8K+/ACP5H8sliNfVIo9RO4xfVr2MHgG3ynubgfFco0VtEx5JLVjxqJ1S/wbrauVZbebh9dJnQLetWex3dK49OG1mBUQysqgOYo5ZSyuTTeuM8VLXZJHHhHYOx8j3TmypJA49Zgpp2zJ76tpcI8Ppv/dN5Tbj0zxM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=j9vpqXLc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hLGkeVpj; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="j9vpqXLc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hLGkeVpj" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6ua3975509 for ; Tue, 14 Jul 2026 17:17:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 8RHVAAusaXxeQXX0sh5hgTNs/wTLofhUSlbBBflIiB8=; b=j9vpqXLcq3UCn70u MptbTjSVyuO5QfS6c5Mt4IqQt7ODSmXjCxXb6zzAcquG3QatuhRkWE7p3+EQ2K9/ HH9Xx4NXutZ0ZqKZisjB10iqw5MiM14aB1+41jl2mxUveSzEQLMkvT1G00yLW8lI Lp97zuSuMksFjpxUQUUx5vt1POL/LyKrcz7HjepjaD0ZgPtwMVBLmD4HTnvQBdR1 tpDMedJI1xmyjV0EGXNkikagRiNZtVKeTz2YfLFPfEWFASudYcZ8VbamoM1LBdO6 PqbRsrhXGUT4RD0FLxN1vCILMQysjD0dF8wPYUeHy9pUqjok7J3RSGKXtMg/PyFY YCS1bw== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdgeq2d4a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:19 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-848662cd2a1so1352353b3a.2 for ; Tue, 14 Jul 2026 10:17:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049438; x=1784654238; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8RHVAAusaXxeQXX0sh5hgTNs/wTLofhUSlbBBflIiB8=; b=hLGkeVpjUmLPywthG5XzJEpnTSaiQdgjtTtUAQsGgRW+oBXO5pGHOgwoBiRnWKBx8U Qr0KswPdpJjimKvf/FdIATpPjJplWcxhf79ABpzAJp3EauPNFJtazM3eIZ4Zke+j3iWn RzY34jQc/0LmONNhlnq+Gf3qeH9A6sZV2AEFZhoIzdP8UfSelajwsoAOwgcuo6H8Ifek dpRKqJj6/1WaTjcame8N8EF8ljtdAqIdSmVNJjihkGmHxOc8Ji3nOOYL0ID9aPTxQJGe txyFoRdoXV0KTFTPYiYLW9/K2jp3YbQArX9+IBgK1bjUv+t8zbvgGjhh/CtQVeMqJcNL rAYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049438; x=1784654238; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8RHVAAusaXxeQXX0sh5hgTNs/wTLofhUSlbBBflIiB8=; b=mUEHvR30qMGNozsatfiRIrpwlOkiD2IxOJOponN+twkLcNVjR1/QLBl7ZFEAHgINnG LMHwu4idxq+xjy4YMR4G5ilJTzp2FoQO+QrUvhUmKy6iaqzJZhYRA6/6zBijt5yXzEVz acwQuhT25QJF5NSnbhsca23A2IseUDtAOhJ6AnM+pl8SYwU3f5A8cQNykSDEnohfGK8w McOrjV0QN2YhvFsDBcqMBK5KGTIuSD5P1BuOyYiLqavLfOG2Wt923y5FhVo+qm0V0drh UtXL9QEPuR4e+N8ZXhAsotO/ou63e3U+L8PQYy0IiPC8XuejE7oS55BPjfVoOBErFqLN 7Nqg== X-Forwarded-Encrypted: i=1; AHgh+RqxadolFQQB2dpwxReSl9Y4inbCgGJZJvd47e+Yw7KdomMWk+3Gf8VKv9Qa+d6njOMk1+gca+e2ge8iP5k=@vger.kernel.org X-Gm-Message-State: AOJu0YxF2aUkG/BjHWGpwTw4Ewuh2ke7D/v+F0nVP1liIhIf7KIlH4Vr A6i19rr9T6B+Srb7bm3IJSWamD+KpDJbABrbgHh3ziUUjxd3cu9CRqoDqKiCWFixK2lSAqfPO98 lXir8a2NqV8uNE5Kj0E2POe3EBs30PcUaPEF478QHTzbJed5YrIpyCh4BsoSNRxgwQ50= X-Gm-Gg: AfdE7ckcl30J4sNMP8GnilBEmQTWKx2B19NKjSgOpL39le31ovXpww2eW9XkpVUJFCL r3juEeDxJKgrw3XH4wizCzLwyDcOXMFUaAYRAhZ8XJTLpPYj6LwXYzIEceFGI2gBHUQZQqHzFOm 5Py94t3KMei3k41Auc9PSmM0b/A3bEETE50f7B3eyvey7pmNR1StzxIw+yVA8Uo2PlgfnQGqx8C RASrliRc05RvJPZGMS4fDnZbVd0YHSIok7J20R6HXcP26IWEYEYcpJr3fvw7zEqvwFhGETAvLWw Yu5IgSe4Bf4RkFBq3HnnbVSlP7BIeosBsTe4VsQjH3N5IvKtPXDeg4ZTxJ0mLC/lG8AvQOBgL3u pOJMumm2rdBWJkqjJqx0E+5U8hfRC9IjeMO5qBaoqwaaVAY4= X-Received: by 2002:a05:6a00:22c9:b0:848:5951:ff78 with SMTP id d2e1a72fcca58-848897d2bc7mr12964223b3a.36.1784049438071; Tue, 14 Jul 2026 10:17:18 -0700 (PDT) X-Received: by 2002:a05:6a00:22c9:b0:848:5951:ff78 with SMTP id d2e1a72fcca58-848897d2bc7mr12964194b3a.36.1784049437398; Tue, 14 Jul 2026 10:17:17 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:17 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:31 +0530 Subject: [PATCH v23 03/13] power: reset: reboot-mode: Add support for predefined reboot modes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-3-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=13281; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=ArDByZmc9csepA9CgZHxb5udyEDuHBpra4BchbwKAAw=; b=XkgmIxYqF2biUxhGTDhazu1bx4+168Trm1jCPnrjets3o17sJQbSvBWrR9IfVOIVER3v9BIz7 E/fRP7x6CLaB4UJJT7p622harlN38F82A04WOOEnhnQ9cff6bPQf3Bn X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX9aW71OW8Njia aC/U5pu+dYBzCmdO6F+DLEObMCzYxqJK+bxZrquS+pfvJPtGMVAfA+8Ajk0JzmfyVYdnnQzOmyl h5xwro2g8YfyM/8Lv0T9uNiP1jSX2VBtwOELlVfgVEaf2G2Jcp6EtayctIuEgQBJb6nssvKhMY7 vFYQgmf5e0Jm84Lk63vzxZMvZ9bXaKDt9jwJEUUV8InAK9qNRmQifXfZoySB0bFs9psmeVfCKMe FXXVLfxheELaUKUy74biTO6Femx9XebReLHuPfeMJLv1veJo6ODpYpVw2QO11WwqOpQUvEqlAcI JBzHmMUc9M8G5TDrWxkZ7RjgikS3AOeYIZLknr2+9GJ45JLLmj6pxL0RmHdZRTZQFi0aOho9bvQ wM5dpUqQo3d3t8ST3ib8Bl6uAjb/YaN53lafC0DCi5dPBzl05aCJa8Zh8Hn1a6r0ilS9Qzc8Q56 VsQepXs5dIqN73UhWyg== X-Proofpoint-GUID: esTL_3I35iS5Rt8r1U2lk0QhdmGIk1KG X-Proofpoint-ORIG-GUID: esTL_3I35iS5Rt8r1U2lk0QhdmGIk1KG X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX8BaN9RNRkXU0 2fvnRCe5eUbX8/cnxBGYkcDeA/mGWBi/mtXKaNRicgcNdYYUZjEawVHRy+kx4xRDViTIhz1tUjN ZCvpiC14LfAt4u6oL3L2uvBW9JoB8BI= X-Authority-Analysis: v=2.4 cv=V9VNF+ni c=1 sm=1 tr=0 ts=6a566f1f cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=QUVuacwPHT3dDyYMSdgA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 reboot-mode based drivers can define a reboot-mode by adding it under the reboot-mode node in device tree. This limits such drivers, to define any predefined reboot-modes statically within the driver and creates a dependency on device-tree. Extend the reboot-mode framework to handle predefined modes alongside those defined in device tree. Drivers can now define their own reboot-modes and register them via the framework. A centralized init call has been added to the reboot-mode framework and adopted by existing drivers. This ensures driver state is initialized together with predefined modes. Signed-off-by: Shivendra Pratap --- drivers/power/reset/nvmem-reboot-mode.c | 4 +- drivers/power/reset/qcom-pon.c | 4 +- drivers/power/reset/reboot-mode.c | 192 ++++++++++++++++++++++++---= ---- drivers/power/reset/syscon-reboot-mode.c | 4 +- include/linux/reboot-mode.h | 16 +++ 5 files changed, 175 insertions(+), 45 deletions(-) diff --git a/drivers/power/reset/nvmem-reboot-mode.c b/drivers/power/reset/= nvmem-reboot-mode.c index ac69b5f39fb4..4909c65ca02d 100644 --- a/drivers/power/reset/nvmem-reboot-mode.c +++ b/drivers/power/reset/nvmem-reboot-mode.c @@ -53,8 +53,8 @@ static int nvmem_reboot_mode_probe(struct platform_device= *pdev) if (!nvmem_rbm) return -ENOMEM; =20 - nvmem_rbm->reboot.dev =3D &pdev->dev; - nvmem_rbm->reboot.write =3D nvmem_reboot_mode_write; + reboot_mode_driver_init(&nvmem_rbm->reboot, &pdev->dev, + nvmem_reboot_mode_write); =20 nvmem_rbm->cell =3D devm_nvmem_cell_get(&pdev->dev, "reboot-mode"); if (IS_ERR(nvmem_rbm->cell)) { diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c index a508ab26d03f..5f3c6002ef8a 100644 --- a/drivers/power/reset/qcom-pon.c +++ b/drivers/power/reset/qcom-pon.c @@ -72,9 +72,9 @@ static int qcom_pon_probe(struct platform_device *pdev) reason_shift =3D (long)of_device_get_match_data(&pdev->dev); =20 if (reason_shift !=3D NO_REASON_SHIFT) { - pon->reboot_mode.dev =3D &pdev->dev; + reboot_mode_driver_init(&pon->reboot_mode, &pdev->dev, + qcom_pon_reboot_mode_write); pon->reason_shift =3D reason_shift; - pon->reboot_mode.write =3D qcom_pon_reboot_mode_write; error =3D devm_reboot_mode_register(&pdev->dev, &pon->reboot_mode); if (error) { dev_err(&pdev->dev, "can't register reboot mode\n"); diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot= -mode.c index db2129c72341..08d5b58fce71 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -32,18 +32,30 @@ struct reboot_mode_sysfs_data { struct list_head head; }; =20 -static inline void reboot_mode_release_list(struct reboot_mode_sysfs_data = *priv) +static inline void reboot_mode_release_list(struct list_head *head) { struct mode_info *info; struct mode_info *next; =20 - list_for_each_entry_safe(info, next, &priv->head, list) { + list_for_each_entry_safe(info, next, head, list) { list_del(&info->list); kfree_const(info->mode); kfree(info); } } =20 +/** + * reboot_mode_reset_predefined_modes - Remove all predefined reboot modes + * @reboot: reboot mode driver + * + * Reset predefined reboot modes added via reboot_mode_add_predefined_mode= s(). + */ +void reboot_mode_reset_predefined_modes(struct reboot_mode_driver *reboot) +{ + reboot_mode_release_list(&reboot->predefined_modes); +} +EXPORT_SYMBOL_GPL(reboot_mode_reset_predefined_modes); + static ssize_t reboot_modes_show(struct device *dev, struct device_attribu= te *attr, char *buf) { struct reboot_mode_sysfs_data *priv; @@ -117,6 +129,58 @@ static int reboot_mode_notify(struct notifier_block *t= his, return NOTIFY_DONE; } =20 +/** + * reboot_mode_driver_init - Initialize reboot-mode state + * @reboot: reboot mode driver object to initialize + * @dev: backing device + * @write: write callback for programming magic + * + * This function must be called with a valid @dev and @write before calling + * reboot_mode_register(), reboot_mode_add_predefined_modes(), or any other + * reboot-mode framework API. + */ +void reboot_mode_driver_init(struct reboot_mode_driver *reboot, + struct device *dev, + int (*write)(struct reboot_mode_driver *reboot, u32 *magic, int co= unt)) +{ + memset(reboot, 0, sizeof(*reboot)); + reboot->dev =3D dev; + reboot->write =3D write; + INIT_LIST_HEAD(&reboot->head); + INIT_LIST_HEAD(&reboot->predefined_modes); +} +EXPORT_SYMBOL_GPL(reboot_mode_driver_init); + +static struct mode_info *reboot_mode_create_info(const char *mode, const u= 32 *magic, int count) +{ + struct mode_info *info; + + if (!mode || mode[0] =3D=3D '\0') { + pr_err("invalid mode name\n"); + return ERR_PTR(-EINVAL); + } + + info =3D kzalloc_obj(*info, GFP_KERNEL); + if (!info) + return ERR_PTR(-ENOMEM); + + info->mode =3D kstrdup_const(mode, GFP_KERNEL); + if (!info->mode) { + kfree(info); + return ERR_PTR(-ENOMEM); + } + + if (!memchr_inv(magic, 0, count * sizeof(u32))) { + pr_debug("reboot mode %s with zero magic values\n", mode); + info->count =3D -1; + } else { + memcpy(info->magic, magic, count * sizeof(u32)); + info->count =3D count; + } + + return info; +} + static int reboot_mode_create_device(struct reboot_mode_driver *reboot) { struct reboot_mode_sysfs_data *priv; @@ -158,7 +222,7 @@ static int reboot_mode_create_device(struct reboot_mode= _driver *reboot) return 0; =20 error: - reboot_mode_release_list(priv); + reboot_mode_release_list(&priv->head); kfree(priv); return ret; } @@ -171,7 +235,7 @@ static int reboot_mode_create_device(struct reboot_mode= _driver *reboot) */ int reboot_mode_register(struct reboot_mode_driver *reboot) { - struct mode_info *info =3D NULL; + struct mode_info *info; struct property *prop; struct device_node *np =3D reboot->dev->of_node; size_t len =3D strlen(PREFIX); @@ -179,11 +243,16 @@ int reboot_mode_register(struct reboot_mode_driver *r= eboot) int count; int ret; =20 + if (reboot->reboot_notifier.notifier_call =3D=3D reboot_mode_notify) + return -EBUSY; + INIT_LIST_HEAD(&reboot->head); =20 + if (!np) + goto predefined_modes; + for_each_property_of_node(np, prop) { memset(magic, 0, sizeof(magic)); - if (strncmp(prop->name, PREFIX, len)) continue; =20 @@ -195,35 +264,17 @@ int reboot_mode_register(struct reboot_mode_driver *r= eboot) continue; } =20 - info =3D kzalloc(sizeof(*info), GFP_KERNEL); - if (!info) { - ret =3D -ENOMEM; - goto error; - } - - if (!memchr_inv(magic, 0, count * sizeof(u32))) { - pr_debug("reboot mode %s with zero magic values\n", prop->name); - info->count =3D -1; - } else { - memcpy(info->magic, magic, count * sizeof(u32)); - info->count =3D count; - } - - info->mode =3D kstrdup_const(prop->name + len, GFP_KERNEL); - if (!info->mode) { - ret =3D -ENOMEM; - goto error; - } else if (info->mode[0] =3D=3D '\0') { - kfree_const(info->mode); - ret =3D -EINVAL; - pr_err("invalid mode name(%s): too short!\n", prop->name); + info =3D reboot_mode_create_info(prop->name + len, magic, count); + if (IS_ERR(info)) { + ret =3D PTR_ERR(info); goto error; } =20 list_add_tail(&info->list, &reboot->head); - info =3D NULL; } =20 +predefined_modes: + list_splice_tail_init(&reboot->predefined_modes, &reboot->head); reboot->reboot_notifier.notifier_call =3D reboot_mode_notify; register_reboot_notifier(&reboot->reboot_notifier); =20 @@ -234,7 +285,6 @@ int reboot_mode_register(struct reboot_mode_driver *reb= oot) return 0; =20 error: - kfree(info); reboot_mode_unregister(reboot); return ret; } @@ -267,7 +317,7 @@ static inline void reboot_mode_unregister_device(struct= reboot_mode_driver *rebo if (!priv) return; =20 - reboot_mode_release_list(priv); + reboot_mode_release_list(&priv->head); kfree(priv); } =20 @@ -277,17 +327,12 @@ static inline void reboot_mode_unregister_device(stru= ct reboot_mode_driver *rebo */ int reboot_mode_unregister(struct reboot_mode_driver *reboot) { - struct mode_info *info; - struct mode_info *next; - unregister_reboot_notifier(&reboot->reboot_notifier); + reboot->reboot_notifier.notifier_call =3D NULL; reboot_mode_unregister_device(reboot); =20 - list_for_each_entry_safe(info, next, &reboot->head, list) { - list_del(&info->list); - kfree_const(info->mode); - kfree(info); - } + reboot_mode_release_list(&reboot->head); + reboot_mode_release_list(&reboot->predefined_modes); =20 return 0; } @@ -312,8 +357,10 @@ int devm_reboot_mode_register(struct device *dev, int rc; =20 dr =3D devres_alloc(devm_reboot_mode_release, sizeof(*dr), GFP_KERNEL); - if (!dr) + if (!dr) { + reboot_mode_reset_predefined_modes(reboot); return -ENOMEM; + } =20 rc =3D reboot_mode_register(reboot); if (rc) { @@ -352,6 +399,73 @@ void devm_reboot_mode_unregister(struct device *dev, } EXPORT_SYMBOL_GPL(devm_reboot_mode_unregister); =20 +/** + * reboot_mode_add_predefined_modes - Add predefined reboot modes + * @reboot: reboot mode driver + * @modes: array of predefined reboot mode entries + * @count: number of entries in @modes + * + * Add predefined reboot modes before registration. + * + * The entire list is discarded if any mode entry is invalid. An entry + * with a zero or negative magic count, a NULL mode string, or a mode + * string containing spaces or "\n" is considered invalid. + * + * Predefined modes are cleared if registration fails. + * Call reboot_mode_reset_predefined_modes() if registration is not + * performed after adding predefined modes. + * + * @reboot must be initialized with reboot_mode_driver_init() before calli= ng + * this function. + * + * Returns: 0 on success, + * -EINVAL if invalid entry is found in list, + * -EBUSY if called after reboot_mode_register() or if predefined modes + * are already set, and, -ENOMEM on allocation failures. + */ +int reboot_mode_add_predefined_modes(struct reboot_mode_driver *reboot, + const struct reboot_mode_entry *modes, + size_t count) +{ + struct mode_info *info; + int ret; + size_t i; + + if (reboot->reboot_notifier.notifier_call =3D=3D reboot_mode_notify || + !list_empty(&reboot->predefined_modes)) + return -EBUSY; + + if (!modes || !count) + return -EINVAL; + + for (i =3D 0; i < count; i++) { + if (modes[i].name && strpbrk(modes[i].name, "\n ")) { + ret =3D -EINVAL; + goto error; + } + + if (modes[i].count <=3D 0 || modes[i].count > ARRAY_SIZE(modes[i].magic)= ) { + ret =3D -EINVAL; + goto error; + } + + info =3D reboot_mode_create_info(modes[i].name, modes[i].magic, modes[i]= .count); + if (IS_ERR(info)) { + ret =3D PTR_ERR(info); + goto error; + } + + list_add_tail(&info->list, &reboot->predefined_modes); + } + + return 0; + +error: + reboot_mode_release_list(&reboot->predefined_modes); + return ret; +} +EXPORT_SYMBOL_GPL(reboot_mode_add_predefined_modes); + static int __init reboot_mode_init(void) { return class_register(&reboot_mode_class); diff --git a/drivers/power/reset/syscon-reboot-mode.c b/drivers/power/reset= /syscon-reboot-mode.c index 983b1fbf614a..0c7e11276e6f 100644 --- a/drivers/power/reset/syscon-reboot-mode.c +++ b/drivers/power/reset/syscon-reboot-mode.c @@ -47,8 +47,8 @@ static int syscon_reboot_mode_probe(struct platform_devic= e *pdev) if (!syscon_rbm) return -ENOMEM; =20 - syscon_rbm->reboot.dev =3D &pdev->dev; - syscon_rbm->reboot.write =3D syscon_reboot_mode_write; + reboot_mode_driver_init(&syscon_rbm->reboot, &pdev->dev, + syscon_reboot_mode_write); syscon_rbm->mask =3D 0xffffffff; =20 syscon_rbm->map =3D syscon_node_to_regmap(pdev->dev.parent->of_node); diff --git a/include/linux/reboot-mode.h b/include/linux/reboot-mode.h index 34a81e4b4f95..b216c7595f7e 100644 --- a/include/linux/reboot-mode.h +++ b/include/linux/reboot-mode.h @@ -4,18 +4,34 @@ =20 #include =20 +struct reboot_mode_entry { + const char *name; + u32 magic[3]; + int count; +}; + struct reboot_mode_driver { struct device *dev; struct list_head head; + /* List of predefined reboot-modes, populated via reboot_mode_add_predefi= ned_modes(). */ + struct list_head predefined_modes; int (*write)(struct reboot_mode_driver *reboot, u32 *magic, int count); struct notifier_block reboot_notifier; }; =20 +void reboot_mode_driver_init(struct reboot_mode_driver *reboot, + struct device *dev, + int (*write)(struct reboot_mode_driver *reboot, u32 *magic, + int count)); int reboot_mode_register(struct reboot_mode_driver *reboot); int reboot_mode_unregister(struct reboot_mode_driver *reboot); int devm_reboot_mode_register(struct device *dev, struct reboot_mode_driver *reboot); void devm_reboot_mode_unregister(struct device *dev, struct reboot_mode_driver *reboot); +int reboot_mode_add_predefined_modes(struct reboot_mode_driver *reboot, + const struct reboot_mode_entry *modes, + size_t count); +void reboot_mode_reset_predefined_modes(struct reboot_mode_driver *reboot); =20 #endif --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8178739CD1B for ; Tue, 14 Jul 2026 17:17:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049451; cv=none; b=VFxHZ7uRNKfqjphZftdTHRpN2Z9icDZwOwPIEJESOx/kHSnidcGxRZB7V2gdNbGnvBX7jgsLcHcKg/N7bkaKIsqyyasrT8U7+lreJnIX0X88ss5RoVYyQZi6dbOCY3KICKd8Y031Y2JtNH4O/JDruATqEt8JNBH3wLUiNgrLdpQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049451; c=relaxed/simple; bh=ctQvLTJKfrXPTV9ySg7oSX/KcelXwjfNCdBeL0pLEu4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cx26KGq9/e/UjkWwfVLGXx3DoRzC8Vk3VGOUF4wgY+XRY5iHTP0Md6BKyiAKAP9b76F8rLnLLkK6WbP/Ch1WFfbUn4ZuwqFLdij4pB8kjE4o9aODPVxaOBGw3w00JFmzUm6m4eNvJxuX6taeoTIad6wFTeSBxYr2SDDwLzrF0Rs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=FSxVkGw2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RI0Z0ZSq; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="FSxVkGw2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RI0Z0ZSq" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG7EaI879807 for ; Tue, 14 Jul 2026 17:17:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= zFHN2qyJOM1iC26km9OAgCA4h/0y1+tM0gE8VpSZk3A=; b=FSxVkGw2uYfpzVjk oYLqIGkjTfxBsP/xuJL8NAT8OuDiLN8J9Sf3u+u91wCqhhUsUqy34HNqsEOvUZRz 4DClD0BuMasCT3MX6+EO4RGQi4UhUwWGCFMZDrdb/3f8S3CW051RzenA4Jt8uPyn AbO5tNiKkY/thNjp013Dhe+wGdHaarfH08Lv7X0eVhqpUqSTXOtu99elPqZFKzsI e9KrOf6VZKaROjALQXnHV6jLaMja3XAsE+GHGyeFe9fiyGll0wbg3UjGaHUryrY7 xL0jyMYoJPhsbcSsmmL48mWBTaSqlmRkOy92PfbVNth3bMKcjX4/M/HOjYxBENjC KHaFTA== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdnp0h3xr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:28 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-8485b7e18b4so7988492b3a.1 for ; Tue, 14 Jul 2026 10:17:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049448; x=1784654248; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zFHN2qyJOM1iC26km9OAgCA4h/0y1+tM0gE8VpSZk3A=; b=RI0Z0ZSq6wn1aTVqatT+i8zYgnB+ICjhmu3tSHVEyrt+vmQ5SAlnhLJvINSLkYhDnq XlIKPP/2BkZkhhYbyuUTY7maKtGC4Dn8J+H2W0mNvigc66cZvQGIoGpEvfYgpRGaj7+t sH1Jr80JPszK+q+Y44KDMpQfb6RPTdFVqdLfCwUNPZnRaWEDfgiUtzd7376MmYq8VAss rcS+ekIFu7upCEMq+Jf+F3eIC8guIZEZKeTxSvtB2krK9uNLANW5/lAti7xwn6Mf4Wzs TWdlHNuCt6DMdWUhcz3MfUCQaYMc6zBeqX+PFSmL5aROrjNKesAXyAwFq8JqSZiQyj6W IYgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049448; x=1784654248; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=zFHN2qyJOM1iC26km9OAgCA4h/0y1+tM0gE8VpSZk3A=; b=rDrMpjutsunycLPfKsWhukM7RkiL2iYWL8cnDdzTlil8dxbYYHHNjSctOnt45ND5rB MzATdeBeIc0S5QyZUeO5YXpjVHtTz7GCw4cPpOuyqCYAmxMx62phQblo/vQAXKhWMAC+ w9L7zkLWhLgLsLy+yAUwFSGM6omYk/6J0RBnY1ND/F2IUya5yn6uQmpgXkNm9ZgBxj3x dMThgm6+mXmxsM8epdPE6cA//3ye/gBPK53cc8s5yf6vsE1LuPxZ9fm7uGMsi2QrvKZk QrERTek5eug1hCEC9sGDHHVx1Uyguqgm6AkpEm722iXwpvC9er7AocML8gQARvHsXxsv AuCA== X-Forwarded-Encrypted: i=1; AHgh+Rp21UXPG1n98A4ZSfI8ujNLCl19AUiLUB11eDZX06uudm8hyNuhY0JaIZk/vVQx1YhZZIoxKgJeHcq3J44=@vger.kernel.org X-Gm-Message-State: AOJu0Ywy3YVvY/WF6oI2Lxab+g8Vd4O8PWT7eJRMbTZhA8wm6dVpjRbN ksc90/iZGOk0LfUdW8U4ASTDCX08Mx9IPZZJFSLAxBZvjC96RJxfQiq91D2kdEMgq/qJ4i1Os2J jDZJHw/9vfbdHorun02T5HGkq0RZ9H6Or8Hq5+I8EQIvEpEsmHlcpdYzuyMxnkmcBL+A= X-Gm-Gg: AfdE7cmUFaPu7iJngmNR7+vzpvbZSu4EyMjUzL2UY7BpUZLdUuhoJRyLnkbOa9SS2oV 1PuZMrIIhA1pOKEx4+x2Jx7MDKoxigxsX1jrDXB2CjJNKFdYuSnDExS7iLpx0XOeey1L4Z/IUyV qDUButH9aPCfB7zXVsC3hp0OJNQxjPRYSFVIk+XilKRGf59RX22g5xe6m6M8G67Oq503wU5SKJ5 tDbR0CvC+5qMg/2aIBMK3u7pzdOQZ8M+bR8YgffG6dSTRkoyEdeBHilNiXQqggngJkP1v+C2Ba/ tljdBjnbTuDnn3Kc8lr5Fz2/t3k2dfup61lLbNide8jOWkysyUQ3h3OsJjmrEtf8J8Fl9Q5AgML XW/0KmqI8/8/38uFqN38eieytWluPHpUwk0prEYQ2IJ/oBuk= X-Received: by 2002:a05:6a00:3e24:b0:847:86b0:888c with SMTP id d2e1a72fcca58-8488971d94bmr13898049b3a.48.1784049447546; Tue, 14 Jul 2026 10:17:27 -0700 (PDT) X-Received: by 2002:a05:6a00:3e24:b0:847:86b0:888c with SMTP id d2e1a72fcca58-8488971d94bmr13897994b3a.48.1784049446949; Tue, 14 Jul 2026 10:17:26 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:26 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:32 +0530 Subject: [PATCH v23 04/13] firmware: psci: Introduce command-based resets Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-4-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=8392; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=ctQvLTJKfrXPTV9ySg7oSX/KcelXwjfNCdBeL0pLEu4=; b=SOUs+g6IvT98LaENeem1JD2kteiBbRMeyl3Y6VWdoJ2jkc9hBDg+UwF7+zs1bhbk+6Hx582Zb eqzB67lz5wMDeYTxYesBdv47rKnUS3QCBc8BYfNfaPMXViQeoX8ZXGQ X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX3l4hzkX42Fd2 0T39B+GwFClI6sDjsJ0k1yH6pSvM9t5t9nqmWq8N2oTdAS38DqgqTml1lX9ctHdodzt9VPS2/TI zRTPlNUsK62qcON8/Bfj+TLejSC3+HM= X-Proofpoint-GUID: bWa3MPFhY30_vKfIpBSa9r8EXkhhSpgT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX1j7VNoQ5P4YU X4RqN6Faha+CCBw8xuQ4Vq27Mz71y3Tg0iD5SWZnOBuzaC78XIxCb/ErZZhyQhzeS5p0axUSBL1 4QcPDjQCl/Qqs6h2EdcXKF+XFG0q2pkMx4pUHxl853f5kjX8fgJwPwUytQS61TpS6yjUSvGDJOa f84qdtP8bbYTlt1xgdAMfK/zlq3XEJFU81TLYRGWzFhhccohFdKQdSXXlR+GqZP2pCyj4cMedBL pAoVipfvcDUou20++veV9K92IVkfMbbyM4Z8U7FRhaDI7rCtq5PBgGMRTsQ7nPr6dQ26W7aD2on T2QOwSBbhcQORD7xPPH36xh3vq6APVB8zFaTaaWG89VFA8buqVTmf7Ogd50Oey8tbRqeO6B23bq SFFeJTWc1UWi6iFKJJ/vwR/WSH/AkKIrhUF3tZgzDT5ri6Df7ahpEhva4B1b9RH0kK9EG4WNCWR 7U1Q4+F0R8FxIPkv1Fw== X-Authority-Analysis: v=2.4 cv=FtM1OWrq c=1 sm=1 tr=0 ts=6a566f28 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=g7gMiRdxR7lOOi1eyjcA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-ORIG-GUID: bWa3MPFhY30_vKfIpBSa9r8EXkhhSpgT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 impostorscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 PSCI currently supports only two resets - SYSTEM_RESET and SYSTEM_RESET2 ARCH WARM reset. The reset patch is selected based on the Linux reboot_mode variable. The PSCI specification now includes SYSTEM_RESET2 for vendor-specific resets but there's no mechanism to issue these through psci_sys_reset(). Add a command-based reset mechanism that allows external drivers to set the PSCI reset command by passing a reset_type and a cookie. Add support for the following reset commands: - SYSTEM_RESET2 vendor-specific resets. - SYSTEM_RESET2 ARCH WARM reset and SYSTEM_RESET (reset_type =3D 0 and cookie maps to psci_standard_resets). Unsupported commands fall back to the regular PSCI reset path. Default to the existing reboot_mode-based reset flow unless a reset command is configured. If a kernel panic occurs after a reset command is set but before the final PSCI reset is issued, ignore the reset command and follow the normal reboot_mode-based reset path. Signed-off-by: Shivendra Pratap --- drivers/firmware/psci/psci.c | 106 +++++++++++++++++++++++++++++++++++++++= +++- include/linux/psci.h | 36 +++++++++++++++ 2 files changed, 140 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index e73bae6cb23a..881819d09911 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -12,7 +12,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -51,6 +53,14 @@ static int resident_cpu =3D -1; struct psci_operations psci_ops; static enum arm_smccc_conduit psci_conduit =3D SMCCC_CONDUIT_NONE; =20 +struct psci_system_reset_cmd { + u32 reset_type; + u64 cookie; +}; + +static struct psci_system_reset_cmd reset_cmd; +static DEFINE_MUTEX(reset_cmd_mutex); + bool psci_tos_resident_on(int cpu) { return cpu =3D=3D resident_cpu; @@ -80,6 +90,62 @@ static u32 psci_cpu_suspend_feature; static bool psci_system_reset2_supported; static bool psci_system_off2_hibernate_supported; =20 +static u32 psci_get_sys_reset_fn(void) +{ + switch (reset_cmd.cookie) { + case PSCI_SYSTEM_RESET2_ARCH_WARM_RESET: + if (psci_system_reset2_supported) + return PSCI_FN_NATIVE(1_1, SYSTEM_RESET2); + return 0; + case PSCI_SYSTEM_RESET_COLD_RESET: + return PSCI_0_2_FN_SYSTEM_RESET; + default: + return 0; + } +} + +/** psci_set_reset_cmd() - Configure PSCI reset command + * @reset_type: SYSTEM_RESET2 vendor-specific reset_type as defined by + * firmware, or 0 for standard resets + * @cookie: SYSTEM_RESET2 vendor-specific cookie as defined by firmware or= one + * of enum psci_standard_resets when @reset_type is set to 0 + * + * Supported commands: + * - PSCI SYSTEM_RESET2 vendor-specific reset: + * - @reset_type and @cookie must follow platform-specific SYSTEM_RESET2 + * vendor-specific resets. + * - Standard reset selector: + * - @reset_type must be 0. + * - @cookie must be one of enum psci_standard_resets. + * + * This is an in-kernel helper intended for built-in reboot flow callers. + * reset command can be set only one time per boot cycle. + * + * Return: 0 on success, -EINVAL if both inputs are zero, -EBUSY if reset + * command is already set. + */ +int psci_set_reset_cmd(u32 reset_type, u64 cookie) +{ + if (!reset_type && !cookie) + return -EINVAL; + + scoped_guard(mutex, &reset_cmd_mutex) { + if (reset_cmd.reset_type || reset_cmd.cookie) + return -EBUSY; + + reset_cmd.reset_type =3D reset_type; + reset_cmd.cookie =3D cookie; + } + + return 0; +} + +bool psci_has_system_reset2_support(void) +{ + return psci_system_reset2_supported; +} +EXPORT_SYMBOL_GPL(psci_has_system_reset2_support); + static inline bool psci_has_ext_power_state(void) { return psci_cpu_suspend_feature & @@ -306,8 +372,24 @@ static int get_set_conduit_method(const struct device_= node *np) return 0; } =20 -static int psci_sys_reset(struct notifier_block *nb, unsigned long action, - void *data) +static void psci_handle_reset_cmd(void) +{ + u32 psci_sys_reset_fn; + + if ((reset_cmd.reset_type & PSCI_1_1_RESET_TYPE_VENDOR_START) && + psci_system_reset2_supported) { + /* PSCI SYSTEM_RESET2 Vendor-specific reset */ + invoke_psci_fn(PSCI_FN_NATIVE(1_1, SYSTEM_RESET2), + reset_cmd.reset_type, reset_cmd.cookie, 0); + } else { + /* Retrieve the psci reset function from reset_cmd */ + psci_sys_reset_fn =3D psci_get_sys_reset_fn(); + if (!reset_cmd.reset_type && psci_sys_reset_fn) + invoke_psci_fn(psci_sys_reset_fn, 0, 0, 0); + } +} + +static void psci_handle_reboot_mode(void) { if ((reboot_mode =3D=3D REBOOT_WARM || reboot_mode =3D=3D REBOOT_SOFT) && psci_system_reset2_supported) { @@ -320,6 +402,26 @@ static int psci_sys_reset(struct notifier_block *nb, u= nsigned long action, } else { invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); } +} + +static int psci_sys_reset(struct notifier_block *nb, unsigned long action, + void *data) +{ + /* The function psci_handle_reboot_mode follows reboot_mode based + * reset flow and psci_handle_reset_cmd uses reset_cmd based reset flow. + * + * The reset_cmd is configured at the reboot_notifier phase. If a kernel + * panic occurs between the reboot_notifier and this final reset, skip the + * command-based reset and let reboot_mode drive the reset flow. + * + * The function psci_handle_reset_cmd invokes non-returning PSCI SYSTEM_R= ESET + * calls to reset the device. If it returns, either the reset failed, or = the + * command was unsupported. Fallback to reboot_mode based reset flow. + */ + if ((reset_cmd.reset_type || reset_cmd.cookie) && !panic_in_progress()) + psci_handle_reset_cmd(); + + psci_handle_reboot_mode(); =20 return NOTIFY_DONE; } diff --git a/include/linux/psci.h b/include/linux/psci.h index 4ca0060a3fc4..39fe0edec651 100644 --- a/include/linux/psci.h +++ b/include/linux/psci.h @@ -8,6 +8,7 @@ #define __LINUX_PSCI_H =20 #include +#include #include #include =20 @@ -21,6 +22,16 @@ bool psci_power_state_is_valid(u32 state); int psci_set_osi_mode(bool enable); bool psci_has_osi_support(void); =20 +/** + * enum psci_standard_resets - Standard reset selectors for PSCI reset + * @PSCI_SYSTEM_RESET_COLD_RESET: Standard SYSTEM_RESET command. + * @PSCI_SYSTEM_RESET2_ARCH_WARM_RESET: SYSTEM_RESET2 architectural warm r= eset. + */ +enum psci_standard_resets { + PSCI_SYSTEM_RESET_COLD_RESET =3D 1, + PSCI_SYSTEM_RESET2_ARCH_WARM_RESET, +}; + struct psci_operations { u32 (*get_version)(void); int (*cpu_suspend)(u32 state, unsigned long entry_point); @@ -45,8 +56,33 @@ struct psci_0_1_function_ids get_psci_0_1_function_ids(v= oid); =20 #if defined(CONFIG_ARM_PSCI_FW) int __init psci_dt_init(void); +/** + * psci_set_reset_cmd() - Configure PSCI reset command + * @reset_type: SYSTEM_RESET2 vendor-specific reset_type as defined by + * firmware, or 0 for standard resets + * @cookie: SYSTEM_RESET2 vendor-specific cookie as defined by firmware or= one + * of enum psci_standard_resets when @reset_type is set to 0 + * + * Supported commands: + * - PSCI SYSTEM_RESET2 vendor-specific reset: + * - @reset_type and @cookie must follow platform-specific SYSTEM_RESET2 + * vendor-reset encoding. + * - Standard reset selector: + * - @reset_type must be 0. + * - @cookie must be one of enum psci_standard_resets. + * + * This is an in-kernel helper intended for built-in reboot flow callers. + * reset command can be set only one time per boot cycle. + * + * Return: 0 on success, -EINVAL if both inputs are zero, -EBUSY if reset + * command is already set. + */ +int psci_set_reset_cmd(u32 reset_type, u64 cookie); +bool psci_has_system_reset2_support(void); #else static inline int psci_dt_init(void) { return 0; } +static inline int psci_set_reset_cmd(u32 reset_type, u64 cookie) { return = 0; } +static inline bool psci_has_system_reset2_support(void) { return false; } #endif =20 #if defined(CONFIG_ARM_PSCI_FW) && defined(CONFIG_ACPI) --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4F6D3033EC for ; Tue, 14 Jul 2026 17:17:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049461; cv=none; b=ONPJe+INT99A03x/adMM9Yua9460IFXGEE/IL1U4hVwxr8jSVLwUy2JC23JYiSMSAMV9rpPenQifZWy+m1uax/vRb1suWCGu7fB8CILo3GXdm7rQbSkZbGE6Gg7Q3yyoJPo43qLVrqGYWhUqIUdxSCE3nSzlSp0uR9ybJ9nlMps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049461; c=relaxed/simple; bh=WwBfb2ZvreUMO78WFLpkZieBbDtffp1obNxsGq+C7tA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U6JtJPSIeeAt3Ul7Nac1hCVzlJROvEQWqPlQBH6UYYf117hvfqdcvJwn6qSuLkIGHd5StyfSW196+yfPSM76m+yRb1Wqe6iy4ytribCbj6o+xPACDtMDVz6706IwKxPa6/LFsRkOj7MGwsuQ9/hm/cXm7gVSOt2pe5kc3OT3dQQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=XIpxSKZz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gOrAFxJH; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="XIpxSKZz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gOrAFxJH" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAQHO1028356 for ; Tue, 14 Jul 2026 17:17:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= kCPxF6uGGYpLkRljUCIn74j0oFDyhw53Efw/4CN1qbA=; b=XIpxSKZzSXAIx5nx dtyL7UV4jeEyKghqFFtLH3t5mpBl07+HTmnAKBLfP9lEyClC7K2tFozz+8w0k4Kn Gayt6A6bXKY3wBDjW4omOdKzETpNcs8GaZWHborsUYjqdkqUx0fwdLPEaG68Jcef gmwAyj2/e84tKuEX27QBum421jnCugUcfhXG9dbEDLoCC/tO2ay7Yrx+W/T17S1Z XD5h7cyoKqLjuspwgpQS91h193NVxA0UhAiUAKuqVq1oh2ZfpOyB+B++M0cTy8XW KStsZ+MJYFlezyol2ypXVvXMHR9670IrvbilNOqinDAG6OFUaI56PZHz/5SZqMbv JDou+w== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9g00vf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:38 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-848860def2cso4748748b3a.2 for ; Tue, 14 Jul 2026 10:17:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049457; x=1784654257; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kCPxF6uGGYpLkRljUCIn74j0oFDyhw53Efw/4CN1qbA=; b=gOrAFxJH5T81kbQh1CZNdcvUmL1IKUaAKc6bHFleCyL5PjBkScABY++JRYcHqxUIQX +ZKBgGblkr08yWAVZA4jILmkqriwVLBMaNIcxBW9tMDChk1RKftyBTUiZqazh3WNadxy wklXT+d+V4yTiwLdNbS2E01fYJ9rePbkDfl7QvCxhSP6aO5a/YrcVpliU6xsYQuohM/A /tACAJjTp2J5n3gjtNbwVIP2PkNWASCPI1aYfvtYoe4T+6EfrE/dOvUQ2BQe1rNUzDuW xYbmmjkXTXMgn/nMfUaFsf43rnZPLf1JzBvbGoG00KWG9fxaxIJ1S7rSLb52UQwDcM8n +XfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049457; x=1784654257; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=kCPxF6uGGYpLkRljUCIn74j0oFDyhw53Efw/4CN1qbA=; b=ca6maTJp1AKlqXkX4OprsB5gv+2oPcqshfrE9YHlYztLKN7O5JwMU1yAjBcCqZvGd8 u1vToxzjhqJMergSZc5f7kZLojH8kW/4ddgXpgYCD8JGC6I8yysp1DndQnZUf45etARP ibbsm550hzeVBWpY+n4cSKhKLwpzbdQsiPqvtjeeNh5T84EkciObBu3GewVXyk0VNzUn HhbnMPOQ+rTwOe5qMoLkcZ++8seqk54QwfLZRxCzi7OsYX63ZtpAycgiuaKOZVtctZxi dJWyycl7zrSjhSqA+dmHCBdMGj8gJECMNbq9t8gCE1TwnhALUJl1NhZ06XTId7jSbV+W 4xpQ== X-Forwarded-Encrypted: i=1; AHgh+Rqw1ORduJo/1nNIAyLaE7E9QWUTya+AhYFuxmcCgbKpVSh+mIzVSDsMDR0Hz90Kc9S+3fPzBEgHe021ah8=@vger.kernel.org X-Gm-Message-State: AOJu0YznkSqJHY1EsL6d0FH7aBa64AA00QkMGZMPZF+VkrccwTthCbWS wioBUJ3pE6vYPPbPcDsytw39hfenKOHvuia0eGBv2/1UWwAwfSQfB55oL4Y9LvIq7J8Dz8lB0vo FCCRsXvhdG9SIjKx65s2Sr4VRl12C1avDfJQX3ifsj45BT9Lq34C2gRU/pAaeMTuS+VA= X-Gm-Gg: AfdE7cmnY/ggq16/oeVhg03qC27i2ZtuaAf2tKwNkCGNfFUockLAPis78T2ZI29tYqU RXee2jJTXlkSXd051IieDPWzi9Q268GnW7SHe1RenZXzwNu7lOx0nAl21Io7V+dtEAU568dz9X9 DsNPl5qDXrazMcXv+eE3deaV/PAWsYGZRcGJRMrCWSEXcXR9HUzSo2NnEr2Mp4k30J7WzRI78zg deMESG5wc3BtV7norAKPbLaXcVGhIZJCWhBLdYR4ycSc/GntepRSJu2/L6JotQNUFAIOciAEn2q pnjgI3aYJ5FycmGNpaQkKw9drNQiwOCZLPtYS4HKPLs0bF8gDJ7J1rVASpINTrryd8DQgL5TQWJ z/oX8fH81a/hAPULJxZRbVfGT4w6KuvIMDOoaumWU0bnGJ8I= X-Received: by 2002:a05:6a00:1f06:b0:846:8b22:4933 with SMTP id d2e1a72fcca58-848896612c6mr12636100b3a.17.1784049457275; Tue, 14 Jul 2026 10:17:37 -0700 (PDT) X-Received: by 2002:a05:6a00:1f06:b0:846:8b22:4933 with SMTP id d2e1a72fcca58-848896612c6mr12636064b3a.17.1784049456631; Tue, 14 Jul 2026 10:17:36 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:36 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:33 +0530 Subject: [PATCH v23 05/13] mfd: psci-mfd: Add PSCI MFD driver for cpuidle-psci-domain cell Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-5-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=5547; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=WwBfb2ZvreUMO78WFLpkZieBbDtffp1obNxsGq+C7tA=; b=WEdIWqidYL4gyeVT9/byS7p/mXPDZVnitOfzgIAtnnqC5h6RRMdVeDn5ckn8JBbNV5EfrHuSs BVz4nGfXAeXApyajcnFqdc8bYpM+ClQFd6+S+1kCDr/2nmCXDqDEKl8 X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX2mbGhO4mGkUk uyF0e+LSr3tFV0mjCgXhZRRdZmwpws52mhwFV9g9d3bhPeUzDSLwlCVIKCnmiD78F3MKz1AQ0Yw utluoiAAmf8WfU7FpAqTcwo9DjmxIRY= X-Proofpoint-ORIG-GUID: Rbuy3qAPGpOAPf5FsEotl9zhAJzt5WTo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX7Hs2Qdi939wd NwOj5rAj86BN+8llUB837mQ2tDS1Zd+S+KcRp5afKAL3n8ZqW3C5eIWK5A9lk8SVJtch4WwEwML h3EZJfInLicTJGxIhQcBcYGE7vBOuhEOTb4SIrDQvJ0CSUfhxQpouAXbPQQ+KgtXNuRdqvY55Tg WjJaafy2sBSc7ZNE3QizT30R67OiH99tr3DNmwdebqt6o37W2fW/4YDiVlx67zRdA1OJpYo/uCZ OGoEyteQqTZd6AzXtA9bD1qPiiwrX9TJ4ImidYg9MdarNL4LbTN9Be32IqBP61c2P52G3hzk4l5 NwE3puE/ra6auw0uu/zOIXMvnsKNix4+A0gV1yd6YWUZcyCPy3+YJJquzC1js/vMw0SzBCxz5hB 7O7E8k94b1UjlTjUlQi0uvSzhDEoHapTdoWOUr5hTktGfIqb5McHND+rtcSP9y1AGEsejEBKTeM pOfqDDwl3k8kBCw5Ajg== X-Proofpoint-GUID: Rbuy3qAPGpOAPf5FsEotl9zhAJzt5WTo X-Authority-Analysis: v=2.4 cv=VoATxe2n c=1 sm=1 tr=0 ts=6a566f32 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=JfrnYn6hAAAA:8 a=wfThnEy5_2w5d1iZ5YkA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=1CNFftbPRP8L7MoqJWF3:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140177 PSCI has multiple kernel consumers, such as cpuidle-psci-domain. Currently, both the PSCI core driver and cpuidle-psci-domain bind directly to the same PSCI node "arm,psci-1.0". Additional consumers, if introduced, would also need to bind in the same way, leading to several drivers attached to a single device node. Introduce a PSCI MFD driver that binds to "arm,psci-1.0" and registers PSCI child cells. As the first user, register cpuidle-psci-domain as a child cell. Update cpuidle-psci-domain to probe as an MFD child and use the parent PSCI node for power-domain traversal. Suggested-by: Bartosz Golaszewski Reviewed-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- MAINTAINERS | 1 + drivers/cpuidle/Kconfig.arm | 1 + drivers/cpuidle/cpuidle-psci-domain.c | 9 +------- drivers/mfd/Kconfig | 12 ++++++++++ drivers/mfd/Makefile | 2 ++ drivers/mfd/psci-mfd.c | 43 +++++++++++++++++++++++++++++++= ++++ 6 files changed, 60 insertions(+), 8 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index dcffe9fc54f6..e1ed6abef62a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -21575,6 +21575,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated = for non-subscribers) S: Maintained F: Documentation/devicetree/bindings/arm/psci.yaml F: drivers/firmware/psci/ +F: drivers/mfd/psci-mfd.c F: include/linux/psci.h F: include/uapi/linux/psci.h =20 diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm index b88b01aa5829..c5ecca0d7397 100644 --- a/drivers/cpuidle/Kconfig.arm +++ b/drivers/cpuidle/Kconfig.arm @@ -36,6 +36,7 @@ config ARM_PSCI_CPUIDLE_DOMAIN bool "PSCI CPU idle Domain" depends on ARM_PSCI_CPUIDLE depends on PM_GENERIC_DOMAINS_OF + depends on MFD_PSCI select DT_IDLE_GENPD default y help diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidl= e-psci-domain.c index b9e4ad7d43a3..a2d01810f295 100644 --- a/drivers/cpuidle/cpuidle-psci-domain.c +++ b/drivers/cpuidle/cpuidle-psci-domain.c @@ -17,7 +17,6 @@ #include #include #include -#include =20 #include "cpuidle-psci.h" #include "dt_idle_genpd.h" @@ -122,14 +121,9 @@ static void psci_pd_remove(void) } } =20 -static const struct of_device_id psci_of_match[] =3D { - { .compatible =3D "arm,psci-1.0" }, - {} -}; - static int psci_cpuidle_domain_probe(struct platform_device *pdev) { - struct device_node *np =3D pdev->dev.of_node; + struct device_node *np =3D pdev->dev.parent->of_node; bool use_osi =3D psci_has_osi_support(); int ret =3D 0, pd_count =3D 0; =20 @@ -181,7 +175,6 @@ static struct platform_driver psci_cpuidle_domain_drive= r =3D { .probe =3D psci_cpuidle_domain_probe, .driver =3D { .name =3D "psci-cpuidle-domain", - .of_match_table =3D psci_of_match, }, }; =20 diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 35f6e9b76d05..8b7fae5d3f5c 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -2368,6 +2368,18 @@ config MFD_KHADAS_MCU additional drivers must be enabled in order to use the functionality of the device. =20 +config MFD_PSCI + bool "PSCI MFD for psci child cells" + depends on ARM_PSCI_FW + depends on OF + select MFD_CORE + default y + help + PSCI MFD registers PSCI child cells and exposes them as + platform devices. Child drivers are probed only if enabled in the + kernel configuration. Select this option whenever a supported PSCI + child driver is selected. + config MFD_ACER_A500_EC tristate "Support for Acer Iconia Tab A500 Embedded Controller" depends on I2C diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index dd4bb7e77c33..7fa0112ec309 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -24,6 +24,8 @@ obj-$(CONFIG_MFD_EXYNOS_LPASS) +=3D exynos-lpass.o obj-$(CONFIG_MFD_GATEWORKS_GSC) +=3D gateworks-gsc.o obj-$(CONFIG_MFD_MACSMC) +=3D macsmc.o =20 +obj-$(CONFIG_MFD_PSCI) +=3D psci-mfd.o + obj-$(CONFIG_MFD_TI_LP873X) +=3D lp873x.o obj-$(CONFIG_MFD_TI_LP87565) +=3D lp87565.o obj-$(CONFIG_MFD_TI_AM335X_TSCADC) +=3D ti_am335x_tscadc.o diff --git a/drivers/mfd/psci-mfd.c b/drivers/mfd/psci-mfd.c new file mode 100644 index 000000000000..7affd6bb09dd --- /dev/null +++ b/drivers/mfd/psci-mfd.c @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include + +static const struct mfd_cell psci_cells[] =3D { + { + .name =3D "psci-cpuidle-domain", + }, +}; + +static int psci_mfd_probe(struct platform_device *pdev) +{ + return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells, + ARRAY_SIZE(psci_cells), NULL, 0, NULL); +} + +static const struct of_device_id psci_mfd_of_match[] =3D { + { .compatible =3D "arm,psci-1.0" }, + { } +}; + +static struct platform_driver psci_mfd_driver =3D { + .probe =3D psci_mfd_probe, + .driver =3D { + .name =3D "psci-mfd", + .of_match_table =3D psci_mfd_of_match, + }, +}; + +static int __init psci_mfd_init(void) +{ + return platform_driver_register(&psci_mfd_driver); +} + +core_initcall(psci_mfd_init); + +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D70A305699 for ; Tue, 14 Jul 2026 17:17:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049470; cv=none; b=bfkRgQQMCd7uKVNWrtnc9VwFZJzxE434eyy9rsJKwkpNNph/hu/amKxMyBBQGoiq0UvTwNNqIjY4wrp0g/vQc5tniZEGfreTDflaNR46fb9k1mUe4s9/gP+RHDxKAIMuQduu1tU+f4HwhbqebgzIEBm3ZkBoxDhYLv9WABZo/bU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049470; c=relaxed/simple; bh=IeB5JGZlGnhunhqpImylStG7bJZPq9+76gfyd+j+btE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cPHjAx7tXJt03krGkxzxDuam9Gm1odz94toS8nhc8cdiERo/g4aLUmHCYO/XBoqzaWc1jFEK+eYdW3v50Oh2GjNj/qYipGTXaHhrS1WHpHsB0tkDKdem4GLl6otP6H0vIruwKwPRS/827kITqmcl/EOUTbwHd2uf3ra2Xmm867U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ef0V5nvd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TeKYEU0I; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ef0V5nvd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TeKYEU0I" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAQOo1028353 for ; Tue, 14 Jul 2026 17:17:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 1PGsQdjfpqkGRVClnA4+TCms2gSn0k/rM0l7GkssEAo=; b=ef0V5nvdxoQ9Uunt UqGTUhKqlW3C9z290Yj54z+LupZDTZ1sjEjCalHA6STcYmlrE3Db27rSKHVQbHGg E3r0Sm1EaLG2Ag+UqnBfvoC+ocFB0xpqU/2ac8mqdwyG74/EyykQXlUJZqbGsMbc 8tQUU0/Mr15luVNcXZAe6ha3PP0zib5JdQL+S1U5N3coaYk3peXoHaeHEYqtB+CW Zgj3PKsbduMuasDMRAvPF0pwxXM1VabLZ4S1dXpT5jZL+iofIoL4PdXNeLr1Iied RaCpNWPJGNcs3XgZJdiwzYvzNfAMMcTaupug8k4qOYsGCmgHefWX5raSoxa/DaiJ RrENpw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9g00wb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:47 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84a251c2e3eso1802238b3a.1 for ; Tue, 14 Jul 2026 10:17:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049467; x=1784654267; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1PGsQdjfpqkGRVClnA4+TCms2gSn0k/rM0l7GkssEAo=; b=TeKYEU0IyY7n1IqjM7vYFDbLn/V8w3ztPZY5v4mS9Jca6plOeH/3js67oO58fwzUg+ nDsoIlircE16Ys/qkU9IZGvmVVyirdWEn31OdwW6xa1zjBZr6xdlc+EaumZWwhvNaXOE b4bsWmDspUg4dxBI5Pat7USFn1L9ixKj83J10SNX0IKA2UyX2MfiQYCSTSywRZ2WMOI3 9VZG54rvrZKmMDZ5m6INQjzX/5gopaJSx/E5hTrriwAeIam6LltKmbV065jsEnATOwrV UAp0YUFBVvboJZQTFJ1vYQiAXeQMbFK4wmNWivfPZzolPcCGNwGNuWrl4ZKVSKvgjI69 Eihg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049467; x=1784654267; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=1PGsQdjfpqkGRVClnA4+TCms2gSn0k/rM0l7GkssEAo=; b=Xf8xlaGJF/3UT5Vk3WzeLcLqYWFkAJ3hxl4rJ6uVi7RhMCEuPVAWDjwcHKA3hK8ji2 Q6a3w7sYPVDjODXQ5YZ+f2ve1es69OVVtuP0ZpTFd1TLEWfOL8fR5mfva4Qprj3U+4NM yLkauyjwyyS6UvtnWHuBQ1UHdTqwfZSgfEPiLpHXdpfmrGKkz405z9SkLApBjp9K1dSc +YWksqlY87Jew6ppBihkGNAXxpNUYZ1m1GujDax4Jze9dvCnCYVy2H2dLVGgAYa8+Lkc UCXi03L0crvC1HtfxYV8abL758kdqFLrM/+61Q42svc1IyOFVv8ClTGgGnOKwdSAeigH X8sQ== X-Forwarded-Encrypted: i=1; AHgh+RrZELRtZeempX+4ScSmqqUYQqrGjNikDFYvCl7+3pR821u1xEdFVo0avUfjIFD18Uurl4p6C6ilw9VhL10=@vger.kernel.org X-Gm-Message-State: AOJu0YzHf/m2dipny8aWDfXLXOgT5LsdBZkoE9h3z4f6jw+knE0XnIkp K7Feecu9XrLju8mwxQQJk8mUDR8hTkPIR/fV6zn/vSilebkjQgssn79yxGWQMWfdoGy9vsDcdOW fhOOKlG4yBn8pLbgsslF0+WCNHIkalhDvy+2O2zLk5KFAHNcY4E1aa8y7m525tL0P/WI= X-Gm-Gg: AfdE7clzN4Xlq6x7tjmsK8oVyC63BMuVIDvhuYmOSs70v2b7q4scTIAqKdBINtNRf/H iOGeXqh0h/hf4386wJL+60eMdXNH0NMH+meijBSAdLkG80yM3A6lXE/JOXjReva+b+zfKvambV3 JD2E4Q7iB1JK+HE7g1LVlPfM4uPgq/fyrIcnclYuP7Oz2WqXADtpr1Hv2kScPTF/1B7MojpHenV Tbeqvjj+n+XSg6UDNjM0qdQWqUl10MFPYH/XjgWd0eL3zhGKRIqlmAlS7ntdLCPPVr8+X63UY4W qjhecoPPX8oPl8Z+GaQIYPnsKveogHiS2cq1DdyYeOfCcQdv+z3OZdDho0AGXHWInGie+QcBnPD DA1Yvh1d0wBBul8AH2mSfUa7ZQqzOt8VSPYUCSNdzJRy8uHY= X-Received: by 2002:a05:6a00:6c9e:b0:842:4982:82f with SMTP id d2e1a72fcca58-8488ab52c4emr12500750b3a.2.1784049466596; Tue, 14 Jul 2026 10:17:46 -0700 (PDT) X-Received: by 2002:a05:6a00:6c9e:b0:842:4982:82f with SMTP id d2e1a72fcca58-8488ab52c4emr12500713b3a.2.1784049466153; Tue, 14 Jul 2026 10:17:46 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:45 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:34 +0530 Subject: [PATCH v23 06/13] dt-bindings: arm: Document reboot mode magic Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-6-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=3015; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=IeB5JGZlGnhunhqpImylStG7bJZPq9+76gfyd+j+btE=; b=Rqul/vs6hKIoNIq8CYBVBXktxm+9XrK1d2fQHxlRs0lwZTte0K2Wy0m++KG3ub+9uPYRfMpW0 cWLGWZTns3eAts3X64dU254nt7q30B6sK3/wB+hz3gjRYl0RgDJsSwU X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX7wbZI2259TYH Q4AfDwWgKfXRTCqrUw54d4YhoA+SiXLK3aCxWHE52TcRuMo8ofZtaJEw4KFngYQCe6dM0aCQ0Pb o49Y9X2J0E7vyCz71OEJmHYK/FnQsSo= X-Proofpoint-ORIG-GUID: MXXbcxkk68DyE8u53-QY0qbjenAl7UPc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfXw8B5aSidMCT+ Stt2lnUY9hbiyRiaUUP1Gq+Bk5enKCuHWVVb7hwybwtBw0YsujF3VoVHHNBF5vs9ZfTCyPsBQkM Kjw675oJJonszptTZlEIoD5FPjxKDReU6YKA6iwbAraFGcda0RtnFchuBSKu+GaZPWdR4v+jV+w cngC9qDX+X7AzhvZ0LPntqf0hS45BXzD0lMusEmKicoz8YuSp0XNmx7MyWmFQfa7lFrv5UXRaQl ihQVj8yob2Fko19kawrAF99+Jo4VjqCUAQ7AnpEAcLjTqaJjBpjDqI5/6GyP5eTYBavObtSJxwE KsSXP8ZJr3pzDO2UwmHJwfb6YpsWpAdeiHsAsYdLTc+QDeZRSYgxQk/XZbCCwnW8qq6SBEM7npP Q9dKs/5LGb6RSNOYiRFLugnhZOhtfn/H0SsrJ1WJK2mCt//6oNTEZQVVmMnMSlrDfUw0k+O4fxr awGY5t8xEzqPnlNStxA== X-Proofpoint-GUID: MXXbcxkk68DyE8u53-QY0qbjenAl7UPc X-Authority-Analysis: v=2.4 cv=VoATxe2n c=1 sm=1 tr=0 ts=6a566f3b cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=QueE7lSFyTnArNAPXxMA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140177 Add bindings to describe vendor-specific reboot modes. Values here correspond to valid parameters to vendor-specific reset types in PSCI SYSTEM_RESET2 call. Signed-off-by: Shivendra Pratap --- Documentation/devicetree/bindings/arm/psci.yaml | 54 +++++++++++++++++++++= ++++ 1 file changed, 54 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/psci.yaml b/Documentatio= n/devicetree/bindings/arm/psci.yaml index 6e2e0c551841..11b90e8affb3 100644 --- a/Documentation/devicetree/bindings/arm/psci.yaml +++ b/Documentation/devicetree/bindings/arm/psci.yaml @@ -98,6 +98,37 @@ properties: [1] Kernel documentation - ARM idle states bindings Documentation/devicetree/bindings/cpu/idle-states.yaml =20 + reboot-mode: + type: object + $ref: /schemas/power/reset/reboot-mode.yaml# + additionalProperties: false + properties: + # "mode-normal" is just SYSTEM_RESET + mode-normal: false + patternProperties: + "^mode-.*$": + minItems: 1 + maxItems: 3 + items: + - description: arg1 (vendor-specific SYSTEM_RESET2 reset_type) + minimum: 0x80000000 + - description: arg2 (cookie_lo in 2-cell form, cookie_hi in 3-ce= ll form) + - description: arg3 (cookie_lo in 3-cell form) + description: | + Describes a PSCI SYSTEM_RESET2 vendor-specific reset type. The s= tring + after "mode-" maps a reboot mode to a vendor-specific reset. + A vendor-specific reset takes two arguments, a 32-bit reset_type= and a + 64-bit cookie. The arguments are encoded as up to three 32-bit c= ells. + Each mode property is encoded as mode-xxx =3D , + where: + - arg1 is reset_type and must be >=3D 0x80000000. + - In 2-cell form, arg2 is lower 32 bits of cookie. + - In 3-cell form, arg2 is high 32 bits of cookie + and arg3 is low 32 bits of cookie. + + All values should be provided as per the PSCI SYSTEM_RESET2 + specification. + patternProperties: "^power-domain-": $ref: /schemas/power/power-domain.yaml# @@ -137,6 +168,15 @@ allOf: required: - cpu_off - cpu_on + - if: + not: + properties: + compatible: + contains: + const: arm,psci-1.0 + then: + properties: + reboot-mode: false =20 additionalProperties: false =20 @@ -260,4 +300,18 @@ examples: domain-idle-states =3D <&cluster_ret>, <&cluster_pwrdn>; }; }; + + - |+ + + // Case 5: SYSTEM_RESET2 vendor resets + psci { + compatible =3D "arm,psci-1.0"; + method =3D "smc"; + + reboot-mode { + mode-edl =3D <0x80000000 0x00000001>; + mode-bootloader =3D <0x80010001 0x00000002>; + mode-needscookie_64 =3D <0x80000000 0x00000001 0x00000002>; + }; + }; ... --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 226DB3019C3 for ; Tue, 14 Jul 2026 17:17:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049479; cv=none; b=galOgdI5uZQyBQo4jRgSFGCLjdguyx5/Zqea8XK/u42SaypLgjmYYpWyAwyTROFSIrkhIefD3RQINkrkQ1ZG9Z6oRH/Vd5vkhgamv6NqEd3wcnkMrk7SQYUTTcx9Syr+zWaQNZk2a3EzwN14kAXodrlayAJpWHswbRA3G2iKcl0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049479; c=relaxed/simple; bh=2g/1r+tUGIrYD+Rpn7qaYdeF3w/p959uoI3764ZH9S4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=awRai3uPACtwX5+1bxOMLbULa70ihVg3gByItcCuX0baK7s6etp8F4ZizvsxjqA/0ZJ0oanSZ6oJpc++zked6J6Br/F51UHelq379un6HyF7zmkImFVCBpdLq/Zt6+WlpjAQbiYRU4hU5l7Q3ZPUovNgADGI4HMKr0Xn0wio9tE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=olQ+i3p5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=axDT57nn; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="olQ+i3p5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="axDT57nn" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAPRc1028344 for ; Tue, 14 Jul 2026 17:17:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6ja824+WEhomskfYCkM3rLk2MZr0em1PMkZk1CkEWLQ=; b=olQ+i3p51ODhRg2X 0dXQ8vmRFQzbniW44oE8+jTuBdtnwuoauiYcPYGzI3xg2eohPZxsPYbPBHeiaZVR 4vk/kp2oX9xy1uimqdzfN4z0ixDc1Hb8M/PbayfvX5vU4C3pv4HUsOREEuoUCh8V kw4EU2iwgqemCvbUl3blD0EUqSjed2l9iWces0GFO4GKI9ZHpP68e4pJwFpeM4u8 +tQQ3S7F2y9lyNR+x++fOL2o2y8XwzemH4MCGqtiG3A60VkVkoxWo7XrrqDf7Tbu yxfZhRjWmQrMzSl93n9Tm8VISd5AwrAfKv4g0a2RjJyFSR0TQwjwMT7qkPNa43uY vWR9Pw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9g00ww-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:17:57 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84857446424so9169277b3a.1 for ; Tue, 14 Jul 2026 10:17:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049476; x=1784654276; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6ja824+WEhomskfYCkM3rLk2MZr0em1PMkZk1CkEWLQ=; b=axDT57nn/EuP0qvB4p7BUM0SEz+IwK7gvSagKFzNSWu/R8PB/hyKO0WMMAoOgDoPLZ Ldadq4MmhVytxVDfgdbXOfox4XNEBnHb4NZpdy9m21ZV3TiFHly7vVc+36Wcy6TeCr8a u2UJCi28kI2HIwruwnItR0FOGKrMU/L3Pf5Rcn0bxsCI3rHlPD7lgALde8BhaQ3XTard YrQxizaVnC+sIRIux1aqArCb3zPJcWOWVR0bzE2dyN2brcibCDzcN97naJcUbfpfGxAf fFPQUv9HK/wTDxk0AP8rAvvhQ32MU1JQqX41cRxUt3eqK9sscC7gE5njjTvLgjahzcez Qfyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049476; x=1784654276; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6ja824+WEhomskfYCkM3rLk2MZr0em1PMkZk1CkEWLQ=; b=JvKr3E24baBJwUvOJHIxLD3W+fpPcISi0LbrocF0OHLfWH+J8GGKcEXgFehSM6Kuux JTlYrV83OeaC7u+B/wG0JVotHtXgbvSSa/6Kh1Gk1qaSXbIz0i5GB1HRe4MouAZgqFsx kjoF74CcP4hUUJ44q3NHwQeGbLGXq3PB7hcbV7w9QiQQxwDZ/chqvdk0nEYdbVYLyHny 7NQ/BwrsfWOHfLKDYbJCjTVoFIaslyOHRJ4d0deQts/oG3cKdmQQ5UXxeJCcB//rl02l tNvUu+cGEW0j/Hf8OJPK2dUgphd1yzIkBcZuitoblllBMLRUvhNImFg2f4jLtP5khoXW 7fRQ== X-Forwarded-Encrypted: i=1; AHgh+RrnHO1dxxCIdldoDxGg5KXTvCvABHf3fm3M85kSEcD1TvI4FoM7AtzsEfw8UvveIyXETDzf4odIkrHUE7g=@vger.kernel.org X-Gm-Message-State: AOJu0YxkNv8Wwo5bH7qIP1fQd+sU3HmAPEgepw2oVXYFta3ll7ta1S6B bkZ65G7W2aYC4wL7ieppEnJ80CakSmPa2sD5UtkZLfxHNIC+FRiGLjcSdOCVBJcManLq2ZVrcd1 cKV4lzEr8gy7ccSu0t8vdHUWpmuOYED6LmSTITeF5To0mqI3OpoOx+AmyhrE0ZNLu8CE= X-Gm-Gg: AfdE7cl0n4FsfJqT/qIYzLKPmHbmHdll859+EuicffVwzkBfdXxiyq6BPqbZSk2BkRL 7B/3b8vQEnAJT8ssVDhcWlSYySTbiMeEwae68sqkRq/+z+30EAC3BQGy5KF8104/aRT6PEuIZox 2CJxDVRsT2ztq1LWxbPbsHlu90+YZjkIZJ6S13JRU3aPM7yqFwz8p/Sjk/pLuywrn1WHcNGEbHn 3mbUXx/nzNEDJDPUCj86SQkrHgVKtC84909gQ8izHG8uKWIyxhoLFiXhKrYUhImNqZxHAbEWO/d OVG93IRP5Mn9jhTfDU8YZCP56UZBTyqf9PIDJJBivU0gBqtn7m5jVIuISlZU+/7Kua+xgwUVQZF SSj9fyYOcaFeTrwo5kE4UkmwQKHsEDX3SjgOBSe8Kar1Qdiw= X-Received: by 2002:a05:6a00:18a0:b0:847:8387:e32a with SMTP id d2e1a72fcca58-848896ddd25mr12586601b3a.46.1784049476091; Tue, 14 Jul 2026 10:17:56 -0700 (PDT) X-Received: by 2002:a05:6a00:18a0:b0:847:8387:e32a with SMTP id d2e1a72fcca58-848896ddd25mr12586579b3a.46.1784049475558; Tue, 14 Jul 2026 10:17:55 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:17:55 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:35 +0530 Subject: [PATCH v23 07/13] power: reset: Add psci-reboot-mode driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-7-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=5437; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=2g/1r+tUGIrYD+Rpn7qaYdeF3w/p959uoI3764ZH9S4=; b=RmGqrG14uHOhF9BDsVH78VIuj42ggnKscphUOnOD+Gsmj+ocFk015pzZWMOf1ClDpSeh6qKxr o9Kk+eX4kGJC5I1S6kHDTRVsTWq5oA0b2e42D470B9lnOFzbRc1I0zn X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX5iZnkG/noCA3 Eg+0k1PXEIcxWVLtSGZQuZUYMTKHc8wdjkrmUFydIRF4U6PiFfDBuGc5pqdFte48B8swZkntCUM unU27lQk9/GXsP1HiVCzJFBxpULi0gU= X-Proofpoint-ORIG-GUID: gHklxfwP4Rj5xDQaI-pBYiCFf9rp6ep9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3NyBTYWx0ZWRfX8sEHLa6IMAKV 9NlbccXolBNzUh77D+/m7GXXkIeyR6ih/4aJwFkhMeKv6Aqd7HSIKuF5JxVRDI+8q85+HxLgt2B 62EtKPSNL4RobnwRmKRYCmQ0pi9gJtqJk5tl7F2qeoEVLL9S2aMq52nwJxwm6xVxDyu91N7NTn4 aXWEq3OeR77+bhABJLpRmQ/pbrJjE21ZfuwVirAFY9NGnoJXttZvgS2MEsdGVt49lBgG1O4f6Zf 0Fux3XGuwm0nfPe2eZWIu1cTCZC1evZuA4rc1+2s4va64hrpYjVemXraoc4wasnqtx+iB7exzFx hZUd/nDqS3E0HqETcsgSokUYWWloJcy5H1jc6MTwUv/5dU7mbrZYetwy9buz/J/fCyYZeG5kWkQ c/rTv6RacgMPSUEOZF23gKLbdH4oJG8AUhqeFnOX69PQgWnSHBVE/ocbZvotEbYBTvi7ssjvnk3 QGS/jxakBYbvAJbyXjA== X-Proofpoint-GUID: gHklxfwP4Rj5xDQaI-pBYiCFf9rp6ep9 X-Authority-Analysis: v=2.4 cv=VoATxe2n c=1 sm=1 tr=0 ts=6a566f45 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=5CqnhzuZLWPXzHx0y-cA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140177 PSCI supports different types of resets like SYSTEM_RESET, SYSTEM_RESET2 ARCH WARM reset and SYSTEM_RESET2 vendor-specific resets. Currently there is no common driver that handles all supported psci resets at one place. Additionally, there is no common mechanism to issue the supported psci resets from userspace. Add a psci-reboot-mode driver, and define two types of PSCI resets, predefined-resets and vendor-specific resets. Predefined-resets are defined by psci driver and vendor-specific resets are defined by SoC vendors, under the psci:reboot-mode node of SoC device tree. Register the driver with the reboot-mode framework to interface these resets to userspace. When userspace initiates a supported command, pass the reset arguments to the PSCI driver to enable command-based reset. This change allows userspace to issue supported PSCI reset commands using the standard reboot system calls while enabling SoC vendors to define their specific resets for PSCI. Signed-off-by: Shivendra Pratap Reviewed-by: Bartosz Golaszewski --- MAINTAINERS | 1 + drivers/power/reset/Kconfig | 10 +++++ drivers/power/reset/Makefile | 1 + drivers/power/reset/psci-reboot-mode.c | 78 ++++++++++++++++++++++++++++++= ++++ 4 files changed, 90 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index e1ed6abef62a..4910abafa170 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -21576,6 +21576,7 @@ S: Maintained F: Documentation/devicetree/bindings/arm/psci.yaml F: drivers/firmware/psci/ F: drivers/mfd/psci-mfd.c +F: drivers/power/reset/psci-reboot-mode.c F: include/linux/psci.h F: include/uapi/linux/psci.h =20 diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig index 124afb99febe..93e4029d9506 100644 --- a/drivers/power/reset/Kconfig +++ b/drivers/power/reset/Kconfig @@ -348,6 +348,16 @@ config NVMEM_REBOOT_MODE then the bootloader can read it and take different action according to the mode. =20 +config PSCI_REBOOT_MODE + bool "PSCI reboot mode driver" + depends on OF && (ARM_PSCI_FW || COMPILE_TEST) + select REBOOT_MODE + help + Say y here will enable PSCI reboot mode driver. This gets + the PSCI reboot mode arguments and passes them to psci + driver. psci driver uses these arguments for issuing + device reset into different boot states. + config POWER_MLXBF tristate "Mellanox BlueField power handling driver" depends on (GPIO_MLXBF2 || GPIO_MLXBF3) && ACPI diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile index d7ae97241a83..02948622fe3d 100644 --- a/drivers/power/reset/Makefile +++ b/drivers/power/reset/Makefile @@ -40,5 +40,6 @@ obj-$(CONFIG_REBOOT_MODE) +=3D reboot-mode.o obj-$(CONFIG_SYSCON_REBOOT_MODE) +=3D syscon-reboot-mode.o obj-$(CONFIG_POWER_RESET_SC27XX) +=3D sc27xx-poweroff.o obj-$(CONFIG_NVMEM_REBOOT_MODE) +=3D nvmem-reboot-mode.o +obj-$(CONFIG_PSCI_REBOOT_MODE) +=3D psci-reboot-mode.o obj-$(CONFIG_POWER_MLXBF) +=3D pwr-mlxbf.o obj-$(CONFIG_POWER_RESET_QEMU_VIRT_CTRL) +=3D qemu-virt-ctrl.o diff --git a/drivers/power/reset/psci-reboot-mode.c b/drivers/power/reset/p= sci-reboot-mode.c new file mode 100644 index 000000000000..955ed68f1402 --- /dev/null +++ b/drivers/power/reset/psci-reboot-mode.c @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include +#include +#include + +static const struct reboot_mode_entry psci_resets[] =3D { + { + .name =3D "psci-system-reset", + .magic =3D { 0, PSCI_SYSTEM_RESET_COLD_RESET }, + .count =3D 2, + }, + { + .name =3D "psci-system-reset2-arch-warm-reset", + .magic =3D { 0, PSCI_SYSTEM_RESET2_ARCH_WARM_RESET }, + .count =3D 2, + }, +}; + +static u64 psci_reboot_mode_get_cookie(const u32 *magic, int count) +{ + u64 cookie =3D 0; + int i; + + /* Build cookie from arg2/arg3 cells in order: cookie_hi then cookie_lo. = */ + for (i =3D 1; i < count; i++) + cookie =3D (cookie << 32) | magic[i]; + + return cookie; +} + +static int psci_reboot_mode_write(struct reboot_mode_driver *reboot, + u32 *magic, int count) +{ + if (count < 1 || count > 3) + return -EINVAL; + + return psci_set_reset_cmd(magic[0], psci_reboot_mode_get_cookie(magic, co= unt)); +} + +static int psci_reboot_mode_probe(struct platform_device *pdev) +{ + struct reboot_mode_driver *reboot; + size_t count; + int ret; + + reboot =3D devm_kzalloc(&pdev->dev, sizeof(*reboot), GFP_KERNEL); + if (!reboot) + return -ENOMEM; + + reboot_mode_driver_init(reboot, &pdev->dev, psci_reboot_mode_write); + + /* Skip PSCI SYSTEM_RESET2 modes if unsupported */ + count =3D psci_has_system_reset2_support() ? ARRAY_SIZE(psci_resets) : 1; + ret =3D reboot_mode_add_predefined_modes(reboot, psci_resets, count); + if (ret) + return ret; + + return devm_reboot_mode_register(&pdev->dev, reboot); +} + +static struct platform_driver psci_reboot_mode_driver =3D { + .probe =3D psci_reboot_mode_probe, + .driver =3D { + .name =3D "psci-reboot-mode", + }, +}; +module_platform_driver(psci_reboot_mode_driver); + +MODULE_DESCRIPTION("PSCI reboot mode driver"); +MODULE_LICENSE("GPL"); --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1248346E75 for ; Tue, 14 Jul 2026 17:18:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049490; cv=none; b=V0r3oPvMT40y2+iUIE3lBes0c937baCmjZ203rCskMBu8HQDdprqsPgmX8Yai2Eswg30S1srCMj8VGaKNCoFeKuPbM8wtHr96SIv27V8xnKfItyblk6J729s1/AkbAp4a9W0SubKBuXvhKNB5RDhjVCCXGgZ2xCagrjMHfjXFes= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049490; c=relaxed/simple; bh=xpBz08jTmXyusCjePfq1hVafxvJ109djGJUNB0orD+8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gVHjdyLnAEam6xMKVzcTsQ7CRWLU9qhnz4H8CLVCXhE70MV70blaLBnRvAHrUeKwutOydGuRxEOJzm9NGukbN1UzdGWY9PlnP1aXea6j1evIn/5srbAggBpz8MAq1rLsI2E0DPXXLBF1TdXdR+93MMoyxwwlHMHpnQfsixsnPbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MwdR8/Xz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JE7YixD+; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MwdR8/Xz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JE7YixD+" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAVk31028391 for ; Tue, 14 Jul 2026 17:18:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 8s7l/m7UGxkZIIDkB6Sh24bMViJas+fhJLKeQf2TBPU=; b=MwdR8/XzC7jmZcmC T62ytHmTWUJFu8YBB7JXFSNibli9m1pMFh0YKAV/hkv/PrBhi9ZP9PaGmJe5Oogv bqBQuAG0tx5XqSW30+Pjmk+oHl41zBOhxoL5EPH8QF2mhMlM6+qqLT48Ei17fCX+ I3hmssAVq/R3aqwNx6/Yd5jMCC6tU5ZxHxe3cIcoriAXqtROLSDDS87F2/xZO1GV ZaUzc1HWd6blOoEFpCn3M/Jyhe2nrJ8xjYMJaZKPaBd4wf/lgvknGLqLi5yHJDhQ gNrwYALaUa6KJVEsvUogQi9DFwMq+PcJq56xIoKwFSLrcBsg00P6yp/crTTfnF9T PO+BUA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9g00xp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:07 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-848551b54f5so8790277b3a.0 for ; Tue, 14 Jul 2026 10:18:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049486; x=1784654286; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8s7l/m7UGxkZIIDkB6Sh24bMViJas+fhJLKeQf2TBPU=; b=JE7YixD++plJgvMT4O6iZ0misqcVF2yTfnHkApeOAMoviWvpxGXb5OtIX5DmQ/umFD ajmzaZPfHBdwayrwBDie/1ebh6acgsn0umrs6xWzrbS2/U8OgQWscXwALBwUL96VXovm UqFVTbXRBbPCVtChuyPJbb91Le0uAQBeNOpaj5mATG5Firo9YdoHHFl/xt5lq7w+vGt6 IjhsogpbXPhDTBGMrhZiG4PEejKtvt4D25zd3LJ0dzLXJ/qiJhTR0inJvFxFBOlyjsUt M+P9PYtnsjFoduSLV1jfAjUGaNM42sbq1v/g4IO249dsSiFjT/h72SZMeVbxTUCxS/wB 5r3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049486; x=1784654286; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8s7l/m7UGxkZIIDkB6Sh24bMViJas+fhJLKeQf2TBPU=; b=aRl3Gcc/XomDtUw/lWV3dMqZ+mYmN3hXFVFknqvHggkgDW/6EOcbIgisC0lfUMinel Y8U0anyEqFj0kVUlVEBLC6Tie2V0jZ/T59523m0FxHFQgFKiwKJySljk03WyK7RVHDU0 O6Bt5sDQM7/dSDCroR0c8PoGkaTIpG06EFSwnIrt/khSBFJ6WtvxUaqNydBMtObrgtb5 Vdq2E0F+DXQPe74JIfGFPW39Pc9GSCn5oKomqRwwmc65b+3caSTKjBrAEivy6en+4T8w Qqtop66ZH1tSKFX4mwo+NI7vjMPdosloYyWExhbomZ+x6H8hdkCG5w6fgOBPK3ZdyTKa 4kQg== X-Forwarded-Encrypted: i=1; AHgh+Rr66lb2UlMjrJ7MyQWOUZExKXY0yA8Ew29XqM/EW51tIoHK+sx0p7MpyCeXmi/9IjZ76EKoZvCraWblXzc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy13icOBtRA+5gBc4/vcsP5eIHx77MWVowuacNRiPAMysDG3kcu 2JGh5XW22QikBn4cf6tMau5fcwJ0CrIGqlo0zLkL4jBTNVKPNgFfGjFiGXZmI158P0JH54k0Q4r R96AX9IMMwpSO4fsM2xkO3RW3DadRKAaUb/mwlds+TooSMQbhYzyrrQM0VLs0Yc0F+W1/O9L2FZ o= X-Gm-Gg: AfdE7ck0nKedVQPidpPtnQkYKShoVv8zBm2Spyu08p4UgQhpIHuSyXEUoIaC+/r+Zm3 zoJlmGSEOibQ/ivO8mZ7C5xBNRtvw310FPkeQOD4UwOjwgqG2k93UsU3/A0tH7AWs6+E2bR+dcb B8pwO9Lt3m4TnBl6pHWEfJ7tmcHJb1YPQa+JmWdVIhc1eHsRY+uaK1SuVBpVSFpQmChO0JTGsJi QZr/F6aBSvEbx/3lKjGLqARc5H19ZS0JVGs5hX68c6TClfmGPqPxkT00C4sc8FeNAgPDAOO5e0H YCULa6ZuvqeViF8xTXRZqLSruWmdthIIgNKXuZZK6P8OK8vpLdYPSCVoAWZvM3gcvuc5iBfAyZQ HMHrLiI00HhK0r7AquY70j7ZoujNzYIMD9pMCWTcpgIht9JI= X-Received: by 2002:a05:6a00:8d1:b0:847:8704:1c48 with SMTP id d2e1a72fcca58-8488961992emr13510248b3a.20.1784049486334; Tue, 14 Jul 2026 10:18:06 -0700 (PDT) X-Received: by 2002:a05:6a00:8d1:b0:847:8704:1c48 with SMTP id d2e1a72fcca58-8488961992emr13510216b3a.20.1784049485746; Tue, 14 Jul 2026 10:18:05 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.17.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:05 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:36 +0530 Subject: [PATCH v23 08/13] mfd: core: Add firmware-node support to MFD cells Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-8-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=8008; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=xpBz08jTmXyusCjePfq1hVafxvJ109djGJUNB0orD+8=; b=KXZZ51uhN5KQpmxnw/BcJEipsOj+v1rq8O/+vuB7MR4ZBpdH4zXSPh1vcBBbaGBLatOIJ7tI3 XDEbJayfgkMDK54Wj3oA6XDxJxXNlYM5G3JYYHiV9uKvkyjsv5yH5Ci X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OSBTYWx0ZWRfX57TPGJ+8LSeE kxyvw3wQGXnu4aEb8blT0nvj33BsKHon+epVx0al0I8RfXzzX/b9j6LmbX3+YrqU7HXIO+8GyPX IPjq8KbN9kMTtM8M6RHB0kclgPTyyEQ= X-Proofpoint-ORIG-GUID: xqrk-U9aO31oRfkyeqIdf0FNTDccolcN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OSBTYWx0ZWRfX8l31Uzzl0cmP DfXGArUZm2BwjtxmpEXnAn//WiRYfxZzkpz8IF/G/nEgYkMDPwnWDbxnYhgqnOOmkDC86JUK10a 2Uu4+Ij6ufUpDcGwzVywK53fH2zae8CUw4uaMfXCg+9eWxPdV1kw7Ya3foaanX4OXTM5jGVsCFT Au1itCGY2VSxodrGFdOXMA6zQ1T0Pn0VZBolsrSg5ggECCCIYmRicC37M7YZd/XQ5Qtm9flGg0D Eu8WiO4ME7sagzxOM5eeuuishQEDiIxqDWHTMz3AtZ/iQLVzVl0p2YmDkj/68qfRZXpV7gkiG0I cdP2NZ0V71Iqrp8XpBIEpelBHcesAB57xF/ExztqAaMmxfJUkvTZaD8/5TMszrderTAgVTEvEfp 0bs5NiZEfhMMcAe2KoqLpnF/H26uGAYL1wNzJkAxXeh3vCbaVWtJW8tkyPt2vLBn8Gpu0SuIkxV WX8b2BVs7tdVnm9BMuw== X-Proofpoint-GUID: xqrk-U9aO31oRfkyeqIdf0FNTDccolcN X-Authority-Analysis: v=2.4 cv=VoATxe2n c=1 sm=1 tr=0 ts=6a566f4f cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=2Layw8R8_bQqnRkAqW4A:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140179 MFD core has no way to register a child device using an explicit firmware node. This prevents drivers from registering child nodes when those nodes do not define a compatible string. One such example is the PSCI "reboot-mode" node, which omits a compatible string as it describes boot-states provided by the underlying firmware. Extend struct mfd_cell with a named firmware-node field to identify a child node under the MFD parent. The node is added to the MFD child device during registration when none is assigned by device tree, ACPI, or software matching. Suggested-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- drivers/mfd/mfd-core.c | 142 ++++++++++++++++++++++++++++++++++++++++---= ---- include/linux/mfd/core.h | 10 ++++ 2 files changed, 131 insertions(+), 21 deletions(-) diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index 7aa32b90cf1e..ba9682ead2ca 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include =20 static LIST_HEAD(mfd_of_node_list); +static LIST_HEAD(mfd_named_fwnode_list); static DEFINE_MUTEX(mfd_of_node_mutex); =20 struct mfd_of_node_entry { @@ -30,10 +32,91 @@ struct mfd_of_node_entry { struct device_node *np; }; =20 +struct mfd_named_fwnode_entry { + struct list_head list; + struct device *dev; + struct fwnode_handle *fwnode; +}; + static const struct device_type mfd_dev_type =3D { .name =3D "mfd_device", }; =20 +static int mfd_claim_named_fwnode(struct platform_device *pdev, + struct fwnode_handle *fwnode) +{ + struct mfd_named_fwnode_entry *entry, *iter; + + entry =3D kzalloc_obj(*entry, GFP_KERNEL); + if (!entry) + return -ENOMEM; + + entry->dev =3D &pdev->dev; + entry->fwnode =3D fwnode_handle_get(fwnode); + + scoped_guard(mutex, &mfd_of_node_mutex) { + list_for_each_entry(iter, &mfd_named_fwnode_list, list) + if (iter->fwnode =3D=3D fwnode) { + fwnode_handle_put(entry->fwnode); + kfree(entry); + return -EAGAIN; + } + + list_add_tail(&entry->list, &mfd_named_fwnode_list); + } + + return 0; +} + +/* + * Temporary MFD-local cleanup for named non-OF child fwnodes. + * Remove/rework this when platform core starts owning and dropping + * dev->fwnode references for these devices. + */ +static void mfd_release_named_fwnode(struct platform_device *pdev) +{ + struct mfd_named_fwnode_entry *entry, *tmp; + + scoped_guard(mutex, &mfd_of_node_mutex) { + list_for_each_entry_safe(entry, tmp, &mfd_named_fwnode_list, list) + if (entry->dev =3D=3D &pdev->dev) { + if (dev_fwnode(&pdev->dev) =3D=3D entry->fwnode) + device_set_node(&pdev->dev, NULL); + fwnode_handle_put(entry->fwnode); + list_del(&entry->list); + kfree(entry); + } + } +} + +static int mfd_claim_of_node_to_dev(struct platform_device *pdev, + struct device_node *np) +{ + struct mfd_of_node_entry *of_entry, *iter; + + of_entry =3D kzalloc_obj(*of_entry, GFP_KERNEL); + if (!of_entry) + return -ENOMEM; + + of_entry->dev =3D &pdev->dev; + of_entry->np =3D of_node_get(np); + + /* Skip if OF node has previously been allocated to a device */ + scoped_guard(mutex, &mfd_of_node_mutex) { + list_for_each_entry(iter, &mfd_of_node_list, list) + if (iter->np =3D=3D np) { + of_node_put(of_entry->np); + kfree(of_entry); + return -EAGAIN; + } + + list_add_tail(&of_entry->list, &mfd_of_node_list); + } + + device_set_node(&pdev->dev, of_fwnode_handle(np)); + return 0; +} + #if IS_ENABLED(CONFIG_ACPI) struct match_ids_walk_data { struct acpi_device_id *ids; @@ -111,19 +194,11 @@ static int mfd_match_of_node_to_dev(struct platform_d= evice *pdev, struct device_node *np, const struct mfd_cell *cell) { - struct mfd_of_node_entry *of_entry; u64 of_node_addr; =20 - /* Skip if OF node has previously been allocated to a device */ - scoped_guard(mutex, &mfd_of_node_mutex) { - list_for_each_entry(of_entry, &mfd_of_node_list, list) - if (of_entry->np =3D=3D np) - return -EAGAIN; - } - if (!cell->use_of_reg) /* No of_reg defined - allocate first free compatible match */ - goto allocate_of_node; + return mfd_claim_of_node_to_dev(pdev, np); =20 /* We only care about each node's first defined address */ if (of_property_read_reg(np, 0, &of_node_addr, NULL)) @@ -134,18 +209,7 @@ static int mfd_match_of_node_to_dev(struct platform_de= vice *pdev, /* No match */ return -EAGAIN; =20 -allocate_of_node: - of_entry =3D kzalloc(sizeof(*of_entry), GFP_KERNEL); - if (!of_entry) - return -ENOMEM; - - of_entry->dev =3D &pdev->dev; - of_entry->np =3D of_node_get(np); - scoped_guard(mutex, &mfd_of_node_mutex) - list_add_tail(&of_entry->list, &mfd_of_node_list); - - device_set_node(&pdev->dev, of_fwnode_handle(np)); - return 0; + return mfd_claim_of_node_to_dev(pdev, np); } =20 static int mfd_add_device(struct device *parent, int id, @@ -156,6 +220,7 @@ static int mfd_add_device(struct device *parent, int id, struct resource *res; struct platform_device *pdev; struct mfd_of_node_entry *of_entry, *tmp; + struct fwnode_handle *fwnode; bool disabled =3D false; int ret =3D -ENOMEM; int platform_id; @@ -224,6 +289,37 @@ static int mfd_add_device(struct device *parent, int i= d, =20 mfd_acpi_add_device(cell, pdev); =20 + /* named_fwnode is a fallback only when no OF/ACPI match and no swnode */ + if (!pdev->dev.fwnode && !cell->swnode && cell->named_fwnode) { + struct device_node *named_np; + + fwnode =3D device_get_named_child_node(parent, cell->named_fwnode); + if (!fwnode) { + ret =3D -ENODEV; + goto fail_alias; + } + + named_np =3D to_of_node(fwnode); + if (named_np) { + ret =3D mfd_claim_of_node_to_dev(pdev, named_np); + fwnode_handle_put(fwnode); + if (ret =3D=3D -EAGAIN) + ret =3D -EBUSY; + if (ret) + goto fail_alias; + } else { + ret =3D mfd_claim_named_fwnode(pdev, fwnode); + if (ret) { + fwnode_handle_put(fwnode); + if (ret =3D=3D -EAGAIN) + ret =3D -EBUSY; + goto fail_alias; + } + device_set_node(&pdev->dev, fwnode); + fwnode_handle_put(fwnode); + } + } + if (cell->pdata_size) { ret =3D platform_device_add_data(pdev, cell->platform_data, cell->pdata_size); @@ -295,6 +391,7 @@ static int mfd_add_device(struct device *parent, int id, if (cell->swnode) device_remove_software_node(&pdev->dev); fail_of_entry: + mfd_release_named_fwnode(pdev); scoped_guard(mutex, &mfd_of_node_mutex) { list_for_each_entry_safe(of_entry, tmp, &mfd_of_node_list, list) if (of_entry->dev =3D=3D &pdev->dev) { @@ -382,7 +479,10 @@ static int mfd_remove_devices_fn(struct device *dev, v= oid *data) regulator_bulk_unregister_supply_alias(dev, cell->parent_supplies, cell->num_parent_supplies); =20 + get_device(&pdev->dev); platform_device_unregister(pdev); + mfd_release_named_fwnode(pdev); + put_device(&pdev->dev); return 0; } =20 diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index faeea7abd688..8daa83dd31ea 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h @@ -80,6 +80,16 @@ struct mfd_cell { =20 /* Software node for the device. */ const struct software_node *swnode; + /* + * Name of a child firmware node under the MFD parent device. + * + * Used only as a fallback when no firmware node is assigned to MFD + * child and no software node is provided. + * + * For Device Tree parents, lookup is by base node name only + * (the part before '@'). Unit-addresses are not matched. + */ + const char *named_fwnode; =20 /* * Device Tree compatible string --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 30A4F346E75 for ; Tue, 14 Jul 2026 17:18:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049499; cv=none; b=iTl6Bo+d0QLuGaRFupzuKWdHJM/SslJGBHk8iEsxLnRW96SsL4EGG4Sf+LrCzREvaSf4XvkST1Zf3JGL5OsOGCqQlEHlYErr92kzfIo9rnRTzexNJUW31Go+ie0sjjIXtJlEvtRUSJ7GYGoPTCM9Qnk09T6N+GFoiQtWC/OJTAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049499; c=relaxed/simple; bh=MfoLK8M+cwJsqJMcoFtwkeKu04gSS+o06svNL8s3zdQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Db/z1eL0pufs67G3BvwNI6Pg5sOG+nb21/Vr2En0y7ECB+e8granN6jQor6WZQ1m6la7tx6Se/Nb0N5Hb75ulqcJ3Bmy+p9/cgsF65cDgHN4Sccaptoc9ofjAM2Hwe8egvSIp+JzNlqKxP+QkCqKKnhogJXWyrZYeMgozZHB4IY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=k6xBjTjj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HuXKonpV; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="k6xBjTjj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HuXKonpV" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EHAVk71028391 for ; Tue, 14 Jul 2026 17:18:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= AE7EF/yIi6dKqkIKGLCajNYTAH086MLgb/mh4Ejjrpk=; b=k6xBjTjjlCMFY+Eo 3CjKPlAA3V0CWRFA3KF4IASSJ8C7Pz8GwNYnuoHyOk3kdGLwleJ3haABo7c8+H4D QnSfJNgDRtn/p9n0l0ZTMGVZ8eZ5HtARQwnnagmgX5xxwt6cD4Oql6LzFYb4caoq b3YaHlfRUUCt2d60seda6PPS9/tQbhfGQ6I2jND6A21umB2pZTegMv45orFEe4oi tXgpyK+v9fukW0o2On8ZXbsqPAnwHDXjolG7pDmso7eRMEOCGYDT7RcnuGUVscZ7 q6T8Utl4V4Lk7Pug1zbUWhF/U98DdK50p8q8Jpb8wCybm15H7GLk1K0+0e37e7VH vxSBIg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fds9g00yp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:16 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8485b7e18b4so7989433b3a.1 for ; Tue, 14 Jul 2026 10:18:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049496; x=1784654296; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=AE7EF/yIi6dKqkIKGLCajNYTAH086MLgb/mh4Ejjrpk=; b=HuXKonpV0J9JhWwTJ2omJv8TtRRMWv5FWENsXvIvT06BUXzYrejpYiELMYrEx9Fntk rWJ2QwTaudBF3lqUG5W3DUerssocQUG3PsClNVu869vxXOSTvqQDAIVuvUP/+ADlnOEY yL9SxHOpzkCtWwoZsCpN2Ff4a5BOFfAtUtgtOP/+52STjWotpwqNcDV4mnuiZEd/2e9+ WLrC3rqZYpKA50tf9vwzDsCqWSN8tgIwpmPvZsm3/avV0wKglASwGOdzRZI4oBlR/lPM Rj4pa89zsqUVB17fyKkY0tvXCm/6pzXT+kIl0GjFsUz4nwQNmSLg1klkUCYLcYSCIKg3 nxmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049496; x=1784654296; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AE7EF/yIi6dKqkIKGLCajNYTAH086MLgb/mh4Ejjrpk=; b=OgC0KVZ5FPw8wM2gayVpNC/AFDL8N0HkLlrT3AHyCw1JtP6nRZGenjYxbaoJb2zAPD o0tmClg4VgnTKpwwSSyx166Ig+W7zIXfe0SEdSx6bUsrjOE+e9+X+quoJg2bb0W1av7c xLdz3ziYzuq4mCs3JyUekup7FvDEVJqS3UW2DAoI/r47+t5HTSqYye6Yf58+YkXI/ofC oUgVrIoMJA381TUFWoYqMpP9ywzqLBstA8P8jWImINNQCDAFpUigDnEfJ7Ow132Smj4M c5FqIWVZUkGtv53YRXH2M2pIbLvTz+w8gWuPx7S5189G+7MWG3xefUElyYqlNa3Wt2rM hs5w== X-Forwarded-Encrypted: i=1; AHgh+RqEp0SzYXEgv3N81B1DFVJ9KIUHsx9BDQnUk7Xyd6smrxbZ1XyRqnwi8fbO4UU5YYrQa4iYkufHhDuCl1A=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3RM/TEE2ZnsQNdcLU1RZdcjUgGzaTli9eJnb66ozH8QXozwU/ mOOz94FYoeHfcbjZcAYD7vX0pH+7tsxz3RXdqc9usE7xhwde/USgqxGaDnrd8JOi5JEzifO0nxa w3hiJzMR7Ym1RSMtuPsnKhdRa3aa/lzw5Ey+pnFJooYAKpSM7+oel0RLme/gYkhhrtKU= X-Gm-Gg: AfdE7cn8gC0ZKOLkNS/b0Q8zMTNGpZ2qAM/RtQlm8yUcGVnXYMYgeviq7eprZoYTugL QZC/hmGa9H75gVZIayjSAKlZeZBq5McBBicveh2rTXatLHbC2SCAY4yXsHv6Y0PnDaHYx2gZYc4 IbHl+YUTJHwD5vm7Fu8W6H0NLvaXrjUPtdllYyW0VCViN5VC1jns4SEmZhL3xTbrYMd3IO2tEce Mp9fyrKMj3ZWPdEFbz4V8YJeX4YjiiUtDwIDya4DvI0g7FiVMuyjGmGyAQ7ududakeh/tZD8Y9r UPrRdrTED2tCVxUNbpoTO8INd5EhMeKdzHxf6c/g8hVSb6/nNcE58XvTFJOaXyXsXhQImJu65fn 8WadV5FK96oY8wEQgq2RT4btXe318C61xKY7ZIUbIIQgY9t0= X-Received: by 2002:a05:6a00:4405:b0:845:d286:1fa5 with SMTP id d2e1a72fcca58-8488974b096mr13460083b3a.52.1784049495841; Tue, 14 Jul 2026 10:18:15 -0700 (PDT) X-Received: by 2002:a05:6a00:4405:b0:845:d286:1fa5 with SMTP id d2e1a72fcca58-8488974b096mr13460058b3a.52.1784049495426; Tue, 14 Jul 2026 10:18:15 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:15 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:37 +0530 Subject: [PATCH v23 09/13] mfd: psci-mfd: Add psci-reboot-mode child cell Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-9-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=2622; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=MfoLK8M+cwJsqJMcoFtwkeKu04gSS+o06svNL8s3zdQ=; b=qc68dV4YEQckF6aiIfbEhwnkSEuflVjvhtpo0b0PGXV9fx3UjJfg2D23zCw4Y79QkpPBLReqM GuYHD88XpFyCNQDG5Cmiuv47u8F4gUERJM9WMx/92hPByxGmUSwjnIM X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OSBTYWx0ZWRfXzzXx7KvRS0pb YhfBefzQmQfM1mKZLqO6E4ZfrR8Dut2nGxdOi1ONiEMZ6qHFUnsLK8MtdQyeuIirTG8F1JDguam HYCdZ0abYZPZyWjnL55fZKPF+MZlm50= X-Proofpoint-ORIG-GUID: 2TSQ_TBmOL2QRLMKqctJlbF4dLMnBpuu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OSBTYWx0ZWRfXyxlJAYcTvkT6 TLAJbYJ3lDQSKx4e6s1GlHUUnPO6X5XnPqPe/KAzEzbMbEXkgldPAwguPQcf1KXnW5JdLE320J0 k8AB7LEJbXik7SJPy9S92a5ZHsSSOJZ4WHtC7eS5wE9A9j0jOAKRP+phNLE6D9brDU2bVHPlxKt +8iPTC2IcW9M9cSj8N7i3i1fQgYptbMiwGc5NlWg9R754MP2bytilTMrcrGxpmUHkk3tLNvlyxc E8qBAtISEiFUixwC/y3pdydqPDCskXe0CeHia7a0g2Zavjy0QjiS++KgudxEl/5X+xhGk1EzUMC HBpY3p6/Uch0rcGBlAJK/CAiDuzFoF0TgDCQriHW0ktPJZGTeUqvTYBauLdfVEweigHL3MRq1YJ 1Di71ok6LzmfuBIQaCFfO1pe10aXYhdt9w3HsUpHRF5/uJIhSQD20oCkDStYqrmD1kFuDhBmZD5 eQzuIM9AA50Nh3rxcfA== X-Proofpoint-GUID: 2TSQ_TBmOL2QRLMKqctJlbF4dLMnBpuu X-Authority-Analysis: v=2.4 cv=VoATxe2n c=1 sm=1 tr=0 ts=6a566f58 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=qQQu7YRYY0fa_xNKXW0A:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140179 The PSCI "reboot-mode" node does not define a compatible because it is a configuration of boot-states provided by the underlying firmware. With the new firmware-node based cells in mfd-core, this node can now be exposed as a proper child cell. Add the psci-reboot-mode child cell to the psci-mfd driver with a named_fwnode. Add psci-cpuidle-domain cell first to isolate it from reboot-mode failures. Suggested-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- drivers/mfd/psci-mfd.c | 30 +++++++++++++++++++++++++++++- drivers/power/reset/Kconfig | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/psci-mfd.c b/drivers/mfd/psci-mfd.c index 7affd6bb09dd..8c6b78ac471b 100644 --- a/drivers/mfd/psci-mfd.c +++ b/drivers/mfd/psci-mfd.c @@ -7,6 +7,7 @@ #include #include #include +#include =20 static const struct mfd_cell psci_cells[] =3D { { @@ -14,10 +15,37 @@ static const struct mfd_cell psci_cells[] =3D { }, }; =20 +static const struct mfd_cell psci_reboot_mode_cell[] =3D { + { + .name =3D "psci-reboot-mode", + .named_fwnode =3D "reboot-mode", + }, +}; + static int psci_mfd_probe(struct platform_device *pdev) { - return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells, + struct fwnode_handle *fwnode; + int ret; + + ret =3D devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells, ARRAY_SIZE(psci_cells), NULL, 0, NULL); + if (ret) + return ret; + + fwnode =3D device_get_named_child_node(&pdev->dev, "reboot-mode"); + if (!fwnode) + return 0; + + fwnode_handle_put(fwnode); + + ret =3D devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, + psci_reboot_mode_cell, + ARRAY_SIZE(psci_reboot_mode_cell), + NULL, 0, NULL); + if (ret) + dev_warn(&pdev->dev, "reboot-mode child cell failed to add: %d\n", ret); + + return 0; } =20 static const struct of_device_id psci_mfd_of_match[] =3D { diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig index 93e4029d9506..b736a80eda00 100644 --- a/drivers/power/reset/Kconfig +++ b/drivers/power/reset/Kconfig @@ -350,7 +350,7 @@ config NVMEM_REBOOT_MODE =20 config PSCI_REBOOT_MODE bool "PSCI reboot mode driver" - depends on OF && (ARM_PSCI_FW || COMPILE_TEST) + depends on OF && ((ARM_PSCI_FW && MFD_PSCI) || COMPILE_TEST) select REBOOT_MODE help Say y here will enable PSCI reboot mode driver. This gets --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B458A30674B for ; Tue, 14 Jul 2026 17:18:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049509; cv=none; b=ip7OfZTb4Qinq3K6/DH2xLcvMOTDHyTEtOWhnP1hqsgORsslj5XLWl4q+dIS98LWfdL05cmQFzol930lUFjgKcyvZ7MIcwfeSDOj7YcmDTK2oQ1rvUeZc2ebBQzaZxmQIxe7WD0iG5P4Y7N7KtDbj/LGyiauhdOZ/WBO9/fQC60= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049509; c=relaxed/simple; bh=PUOB/WUFiDir0kcvDNojilOCna+Is8nt41EZNien9Ag=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GwLlZ4OGASbRn2Svql2Y1elOtrdfK5SNiFqPx/UlmQlPbhdmDNWee8l9XP22Ymb65zDzHfHcLpUhPwsSMdqtbWMseOAWG5wVzJF9UE6nM2zHBaZwmgCcOHFVmWFS2+6MjQAFgEPJTUKP1TFqq3/t1dgvmxjjDI9KT3/KJZtXuC8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pj+DyRlc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZveenGZc; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pj+DyRlc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZveenGZc" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6om31002977 for ; Tue, 14 Jul 2026 17:18:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= gG7R/01sqhJDRepizNPrgnwNsv/MIBa9LUQwgiZjRW8=; b=pj+DyRlcHZB4KDEq Nyo+dST9tBKMJxKuyLZw/7K/s+E12bczgmD6bODwSreG4Wpw6AYDFsh2+Td6Mp6P hZitrFRK/qLghv7wFT84ICnhwGMiAA63ohKh/UT5d9NUyp4HcKDSP+QboM9XTXCn zZ+NBRYMTwwvXETcg7d4GLFQn/TcF2vpAIGiM10kMbydWocyBVolvscpk9JxqOuY S7kZehoVzaYWPY9+U9kMWfRBBDxKbOV/GuD1oMbcfJ4UIC3vZREWVhnDVKEoxrgm vqjYIoJjWqtLRrF/UjWvrw08745qbHrfaDNkEjn3QUbVJmxv2umFvFm0qIiA+PXB RFEy/g== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdnnr13k9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:26 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8484739a9cbso1387903b3a.0 for ; Tue, 14 Jul 2026 10:18:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049506; x=1784654306; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gG7R/01sqhJDRepizNPrgnwNsv/MIBa9LUQwgiZjRW8=; b=ZveenGZca4o/kC4PMlvnA7txYltNShO/OO4T8JWNGtSNwSUFetbi8HSJXdvLQrEsuH 5iFgaPeqNuDJYtCUD6DQKPCGyDl0Wk3jYcGKyLfpmapraGISXAZbm3m9g33LctZC9Y2g jh34FSwf0yeEefPl87aQqf4/ZXmfjivIzyDquXx/Cga4UA79hfAQWCWc/+QZe78BB2Oa wmUNi+3/PBrhYTbbXKaKihtHpkgLHqvdvGUorFpPl8OQsmxl9b1khuT5N097TZcn75oJ H93XX0J3HQlD+hCtFQFPx73jnvbVcmQ5Ql2EMB+y4152FnBEapyoTI070066WTcke46Z ViYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049506; x=1784654306; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=gG7R/01sqhJDRepizNPrgnwNsv/MIBa9LUQwgiZjRW8=; b=o4MNQqOsQAYvzXmZemj8WBl59/OXNUV4Sct/jCu8oAcprgZs5XpjMJPvjQ9NjGZAhQ kvQa+4z2SpR3Ra0a+BMxu5B8gnDg8513ecoLKZlYgsDVSqmKSPeJxsE9l6zIjT1a10Od DnZtnSFrblokS7JkEqwwXTbdFwmFrn6jFB8C08tGssLHmFChioPmLQuKjfnjfPxwQqrj 0RNmqDglKFLigZ2BlLm89+MoomTkU3Uey8tugS2N1dV73cS07HMoIpjdNzoqQQepgXoM MqjneIMH+7uvnIVL/XqMbmuStvdl4rcqUuub9fhNTKJwEXic+EXHZPJIHX3uA/NAvzIw lWVQ== X-Forwarded-Encrypted: i=1; AHgh+Rr79VEAdC1Z5Hpvt4cJAWtskzQYzUShjh795XSCV5wXHPUlwG5QKRDoVWwXqhKyLj9JybmVgy7VdFAiNpg=@vger.kernel.org X-Gm-Message-State: AOJu0YydWgRxCrFIlRFAeNr1EZyKDEQ4nQ2keUCTy3c9+OA4UiBuVCaW RkDFdO+RCy+6HGWhVC6ADkX1tL19rT5tridT039Oo/4+vyc3BSQu90gsLODHw4dGCJh7XeXFyHa usU1TJgbZcdTBCt7wEymBoC0xcWjs8ytW+dJu142Ek6BM0Qw9jxibSdMZzSUDAHh0cTs= X-Gm-Gg: AfdE7ckedpIz0wePH1utmrthONs6jKz8WD2tO3dDmK+o4cZ4xRA118zZPbfpM4ViubK E9evWckBvBiP1yK8/RFx1rHR6M57j//Y8t6Qq0eDhjxv5M8sv7kSmHb8gWhxWaHu2p1sqKIk1Lq e6wBvtD/GiF3pTC2PF+jFldXaCWBuhTm+sKHMFWXWk4ODTOkjnP6bftMIaWtQgIR+9HD/nwMGxL QxVf7G/8ydkn+rFiV3gTZqwk09j++M709ZGHzUDhV6vvw7uKjNAopH5ZSrk8CbBm9MHwvaxURGL jU+B/8wbI7Y8H1PrWimkrFefY+cP39PvDrD04Qhr1bmPDrqFwUmhaPzj8cQEHFCITGE4F+1Bvg3 jiAzyY1EnRr6dT48AkD1pR7rg6oNLnpNDxY7JKDHn5WoI1i0= X-Received: by 2002:a05:6a00:1a87:b0:848:57f3:8f92 with SMTP id d2e1a72fcca58-8488abc3652mr12495388b3a.17.1784049505561; Tue, 14 Jul 2026 10:18:25 -0700 (PDT) X-Received: by 2002:a05:6a00:1a87:b0:848:57f3:8f92 with SMTP id d2e1a72fcca58-8488abc3652mr12495342b3a.17.1784049505079; Tue, 14 Jul 2026 10:18:25 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.18.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:24 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:38 +0530 Subject: [PATCH v23 10/13] arm64: dts: qcom: Add psci reboot-modes for kodiak boards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-10-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=2145; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=PUOB/WUFiDir0kcvDNojilOCna+Is8nt41EZNien9Ag=; b=KWNkfXMmKYthJN1uiFBbtCUXReE0eGK3H1pxspQgqexOI1PPkEewBDCDbvLzZhUdhh0OCxaDh BwcB08aHB/3DrxL54W/bnlwFFGWJlmFNQDZ+h9ABzFiYnUXo+kw1SS0 X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX61v2EjHcu44T Xx7P+UEBV5KF1efF4+AIkrkXITqHfOREz0X3++BYNKD6bCfIfcNwTUuRsyLrW043517F/F6HIcl 3h8osn4MtWGtjqC7uCPvzqDc/IY+bwc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX8eSsJcnioIyn Ta5pU4BtGvuGn3rjBKf+tpzKMhMii5625iTDfJh76cr+ggdbbj/yVZikqhcDvFJphCr7VfwaoVM ufvVsP1H+K2isXr0He6YGp8yuGUI0Kc38usMKevuY9b3i6I1a9QyH0Qd7wqSmUgXeT6bFrGDFie HmyEGqaTaqBMI5LIEUX3BgXEqhtRzgE4c/3zKmaoI26GGGNLJ7YefQ+xZUHS9A4E//HRIrIMhxd yVCCMgQQznZIx01kF29K7SD6re5lSY5rn1VZSGjwA2gpuU/ZXUPwU+E3pCG5iP69y7W/OMzxEJP eiNSH5kak2DTB5NwmkzI4roiSIQAN6f3x/GPQejAHJD2JJTMnrHjO87PcVrllCCRIMYbnKWd470 GwWJZkP/UbDi/udAvCEGQVyYcqDy8oo3Ig1emXe4x5uKhLS1cedMgE61jfghxx/5vEesCE2Wi9o BEF/AgiRuO7VJ3OMz9A== X-Proofpoint-ORIG-GUID: xbMyppY1hHASM_908pf7bp3pUNkWXg_s X-Authority-Analysis: v=2.4 cv=NfPWEWD4 c=1 sm=1 tr=0 ts=6a566f62 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=t9IVmYW30V31rltyR78A:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: xbMyppY1hHASM_908pf7bp3pUNkWXg_s X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 spamscore=0 suspectscore=0 bulkscore=0 impostorscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 Add PSCI SYSTEM_RESET2 reboot-modes for qcm6490-idp and qcs6490-rb3gen2 for use by the psci-reboot-mode driver. The following modes are defined: - bootloader: reboot into fastboot mode for fastboot flashing. - edl: reboot into emergency download mode for image loading via the Firehose protocol. Support for these modes is firmware dependent and not available across all kodiak based boards. Reviewed-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- arch/arm64/boot/dts/qcom/kodiak.dtsi | 2 +- arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 7 +++++++ arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qco= m/kodiak.dtsi index 7e73348fe0d0..82713f49ba63 100644 --- a/arch/arm64/boot/dts/qcom/kodiak.dtsi +++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi @@ -866,7 +866,7 @@ pmu-a78 { interrupts =3D ; }; =20 - psci { + psci: psci { compatible =3D "arm,psci-1.0"; method =3D "smc"; =20 diff --git a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts b/arch/arm64/boot/dts= /qcom/qcm6490-idp.dts index bdc02260f902..b7a0b5347639 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-idp.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-idp.dts @@ -786,6 +786,13 @@ &qup_uart7_tx { bias-disable; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qupv3_id_0 { status =3D "okay"; }; diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot= /dts/qcom/qcs6490-rb3gen2.dts index e9a932c90d14..0dd67cae41ff 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -1105,6 +1105,13 @@ &pon_resin { status =3D "okay"; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qup_uart7_cts { /* * Configure a bias-bus-hold on CTS to lower power --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9555F30594E for ; Tue, 14 Jul 2026 17:18:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049518; cv=none; b=FZ422lkstUGW1qKdoDiuohBfOFDb94S384gtGbHdsf2BXQbTHMMokvsQJIugSM9EyKLSC1b6E44XzSoB56/AT3IfyM7eq27y+XncMUMaAkhTkGqc0ms+AkY4pF8U7gwhY6n9jAUkyKMw7NMjYXzC6/qUYDDsrolVRa4esxl90OA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049518; c=relaxed/simple; bh=Z/HoJXdAtZ7QJgARbgQpZ4UcAlYil6V3oBtsMpR4ihE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dDtnSd2by0nXhbwUlPxRt2AeYy7cr8Ru595ok/zd/4cHjwZqmUA5TU5Pfbq4yMdICxmGBg00Wl9ccKSQVgQwXeoMuYvRL/I0R8cJOg2sRVFIp2uQWotpOtjnpRAuAI7nxNnLaodzYwFHCfc4HPG/eo3vXqq9/h5gFdh/qoTX8l0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SyMiKhuB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dDFy5/bk; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SyMiKhuB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dDFy5/bk" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6vrA975567 for ; Tue, 14 Jul 2026 17:18:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Lgh4YODdsRL2iadze+USZ/JyD5VPsxlZsZRCppKGG/c=; b=SyMiKhuBEFGFFMOG LAglW1TGtpv/TspKS7Wg3pvdduKYdbbfmGDlAH7ZKt8tBULqrXsn9uiHVVJkDgoG W+B9IpwImW9+7Yn1J0t5CeEhONPr8r5gxb1vOFFGPWRDiXINfSu6IhY+XMvE9OLN RMTd9uyxtWqVBfl/ZDUuqhXKNL80/B11nO4AqON2iXz5ghYKsCQcKRqsMKqBnJJ+ pY0P5grkstTY4pn+v6idCcmd+u2VfipEYrotii3oFGfll7NjymxlsXncsMuVzvZH 6A+G41QOBNlW1UHBofIp1ZcElq0iuK3oR/CXChgkp88QfmAr2TVMyuwXZmKyQiZk +w70Fw== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdgeq2dbe-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:36 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8487eb67173so7161182b3a.2 for ; Tue, 14 Jul 2026 10:18:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049515; x=1784654315; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Lgh4YODdsRL2iadze+USZ/JyD5VPsxlZsZRCppKGG/c=; b=dDFy5/bkVoGgkwxNBq+RqB/aezs7hIVfpFLn0f3cPa0bIk4XGEACMQA9vul24jUJzE KEc34VARLBfBJdP+K9llZattCCC6ekDRTB5kdtLLEtb/JOh/EUNPwd1MVW+h7W2tEmZT YK/olDffu7t649rhisbWasscu1DFiDTnIc1tIw+6Cu/zMQ6B7Ruf6YIcFzcDkZ0UEKCZ PbGE62FCJ1fS9rq2xYoiw5ldGAMSFS3YcYGnZhshtzB4b0VuQpucMdm0hXqGXK9rTELM h/Qx9hs4iX5df/0FYOZzJ93BHOlmHBaQeOWf3aN5gQTBxMtoNihWH/1EkWBqeoLVsa0W F1ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049515; x=1784654315; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Lgh4YODdsRL2iadze+USZ/JyD5VPsxlZsZRCppKGG/c=; b=Fj+d7W5Uuo9z8/XFiESdRRLk8oeshG7gqkyCqsD01A0jHRoj0U/IPg13nBiuK6mX3J KY4DH2DBVRQthyyd0y9gDy1v6ZaLa/AwPpiSD90itPGZy265ZnC7fSXXsSFovmAY7X1W Kn6I0tTjlNIsNs36E4sQMSVBazte41ayXQsWYm18ebUpcH5pOpltKDlu1Pi6up1c1DPC oHZ3eggF3KWh913g0nQ5AH1kUqpfo5GEVOI7OnsnNqDVHdYHfn1TTQMo+WFbw6MTkOrb Uz5WtdfA6EyTuren2i0ox75jGXW6AClXJ/C7iMY8pBPNZTA6kY0Qfrw4ZhhJKM5gptQz tu9A== X-Forwarded-Encrypted: i=1; AHgh+RoOlUJAHRMnJx3UB5pkdjGIj7Y+uQZmsvHYtYx45rgkVEhHq6KLl1zX5c9DQAGTaQkDvAg5hYuCc/UAduo=@vger.kernel.org X-Gm-Message-State: AOJu0YzL9T3zUEWVQ5QzDYxEeeJYxIjB/kZS81yYCtau9tD8gveTBX4z 51FqBdwZvfwOp025Z1sZOOLwV0YEx8wGT+i1uE+1q8lwuQCP07V3ag+HzcwICNQSz9BWXEN/jDz kj8X7ygUPTRrPXKPKX1AvURdxIQ73D3gzHtjKAL1NOiC6cXJUpTTL/4utc4P45i9jk2Y= X-Gm-Gg: AfdE7cmX9AlBkTqTMGY96Czvjr4z/vKFNuaKakyrYo28O7hG7B/mtfw0gYghbBAWjyj 4JUOCNJdpPElnsa/KZWlwJgz663leCc5BMYCxSLZyyGIVg+Ld/DHtbFjHYR0R1moo+F9DUpVLiD 3KR37ULGoIXnOlAjf+Ijfw6GnTjQr2QprC/vbWQLqKywXa05I7Sbf97+0nm7hFPOjunbcLlsWQ/ WyMLyjOlwMz0zDMhgjadZbP4pRszNPz+EYyC+07NO46QBwdSm2DuEGYfVMZxKBnlTPIZ+6Jo6iM tC3PO/H+H4qdYEbotuhw9/CNjNgxjp3O20dxY1ubPllR68ZKpeqXOUrxvFm+r6ve+a5k+4yKfLt WBinLBi/Ae8UMRZzJEWQs+oD857yplgn0znyRaMl88Y58rc8= X-Received: by 2002:a05:6a00:a0a:b0:848:2f73:8ffb with SMTP id d2e1a72fcca58-84a51658d90mr4261321b3a.68.1784049515423; Tue, 14 Jul 2026 10:18:35 -0700 (PDT) X-Received: by 2002:a05:6a00:a0a:b0:848:2f73:8ffb with SMTP id d2e1a72fcca58-84a51658d90mr4261285b3a.68.1784049514895; Tue, 14 Jul 2026 10:18:34 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:34 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:39 +0530 Subject: [PATCH v23 11/13] arm64: dts: qcom: Add psci reboot-modes for lemans boards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-11-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=2178; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=Z/HoJXdAtZ7QJgARbgQpZ4UcAlYil6V3oBtsMpR4ihE=; b=NaGRjqx/cA+/1xxaf4JRY1stuUiBVDE4/O5+Y6k9ajUNbjjxsYWFrascqLHoEHnRcwwMr0haC V0njs5oGlkgBrHPIGEO6WpR56MRLhWFK/13OcpxwoIQxt5U9fMLpEoP X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX+pIzKpf9oanV rTnjIDXuB7Hm2CHC/SR/8ZO3EZP5ChnK9W3ZpbHRqGlwqNsCC334wuM5Gc3IovQDPGS7DH4pmfc 53344Q3qfLeIkkGAVIqc5jkk8SJR+ETiLq7ndAVtTx5GtAt73Qn7iMbIlIZX2b07/2/8IDDJ0vw tIiD0lzg6yjs7e2VnB75I9KF/5i5fkINlsjo66cWIpUurV/QVwSNEzVLiHLZ2Y5d9qKHI87j7r9 xTlUmC7z7LDkCN34DcJkdYQBezHjEeZIJjEl6oFrN3LEdCNfRumkNO1bRPnwWZAOX7QF9lrLzIT iXY1CUOXul0wwe+FXzOiizshDSj/77dCFviX78xYxP9MTu9ah4ysaN6J858waquMMpf6ekrWih/ iO0+NrmphVLqpNPTXcBl7AuL47agBrIg5qFNLgrkOD08RGvHkdG9Yos47B6P4v9aeNTfxh8JNzZ MsR4THnWAtj0h2jL61g== X-Proofpoint-GUID: ITlkaE8VxyQM5dCYwm9r_Fa9gVuLgWcG X-Proofpoint-ORIG-GUID: ITlkaE8VxyQM5dCYwm9r_Fa9gVuLgWcG X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfXwkTXRCxgU6rF PM+rRBkEbYhGRQyegUt1Zt7azNPs8fKvYmO8mEHe2ZXI+kE1DkJj8W5qQbO84dpNGo7cRxO47xn hmFLyckykAq1C7tSw0BLXjpBlYrC+W8= X-Authority-Analysis: v=2.4 cv=V9VNF+ni c=1 sm=1 tr=0 ts=6a566f6c cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=t9IVmYW30V31rltyR78A:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 Add PSCI SYSTEM_RESET2 reboot-modes for lemans-evk and lemans-ride-common(sa8775p-ride, sa8775p-ride-r3, qcs9100-ride, qcs9100-ride-r3) for use by the psci-reboot-mode driver. The following modes are defined: - bootloader: reboot into fastboot mode for fastboot flashing. - edl: reboot into emergency download mode for image loading via the Firehose protocol. Support for these modes is firmware dependent. Reviewed-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- arch/arm64/boot/dts/qcom/lemans-evk.dts | 7 +++++++ arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi | 7 +++++++ arch/arm64/boot/dts/qcom/lemans.dtsi | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/= qcom/lemans-evk.dts index 0c53640c42a6..3baad102270d 100644 --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts @@ -911,6 +911,13 @@ usb2_id: usb2-id-state { }; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qup_i2c19_default { drive-strength =3D <2>; bias-pull-up; diff --git a/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi b/arch/arm64/= boot/dts/qcom/lemans-ride-common.dtsi index cefb8ff00806..cc96442403e8 100644 --- a/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi +++ b/arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi @@ -800,6 +800,13 @@ &pmm8654au_3_gpios { "GNSS_BOOT_MODE"; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qupv3_id_1 { status =3D "okay"; }; diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qco= m/lemans.dtsi index 3b0539e27b51..55a3fac0c4c6 100644 --- a/arch/arm64/boot/dts/qcom/lemans.dtsi +++ b/arch/arm64/boot/dts/qcom/lemans.dtsi @@ -549,7 +549,7 @@ pmu { interrupts =3D ; }; =20 - psci { + psci: psci { compatible =3D "arm,psci-1.0"; method =3D "smc"; =20 --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9668447DD7A for ; Tue, 14 Jul 2026 17:18:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049529; cv=none; b=YS+kkbnuLt3PSpoCugO9cZnPTMUxprqwoCkHNIxTA2X2L4qYWK3HpKDlxrE4BPaUIQxahkc+tPMOagmEmWtRYAZ/LweByhRxnp2B8SbDNQZnMFJXEopausROhCkvnFQzhdapqPABSN6kfpLbXiLJZmlwBVWmUN54FKeGg7Ka1r4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049529; c=relaxed/simple; bh=kOJzOHPbdhQsKmeQIeYy6G9x3fc90kQ54JK6p6ylG7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VSxOwkfRDv2pb46st7JKYPU7B4cbsc9QpvPQ8cJrhr7agxhqKCoxGK/2Q4QH10ZVMCWCCtB/zZUMno2VOnylcEgq6Fxe3D6tVPxirTFh9MYVhL+fDnDhSr9qKGXnzzxIly0pA3OD2AdLVFOYvZ6koT2iB1omN31kOaoLvFBWvBU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=WXL8B9bQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UOEbs00b; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="WXL8B9bQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UOEbs00b" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6vrC975567 for ; Tue, 14 Jul 2026 17:18:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= z+8csztsVkxJLpwMf2eNf9DbwNaVLmwQIwSKFspXvgQ=; b=WXL8B9bQguMMatZ+ nel8WLMgwkBiRf3tcfMMV+UESDdCx5LT+vWbGloU8cdejgUeuMEhrh1Lt4D0MMM4 NATCKzvQg1jF/QrEc40SHxo4Fe3f3JzmpO7qDCLrTF1cszT8nxfSZlpTAnxQU3gC sYyWItlzVkBMfKIslCrG+gLoxgyUT/vUT7lXrrFDvPGdG830NX19H6RqMfTAcz8Y uDMGDoES+Nkzi10QkICUDcJk1Dg+EgKvWz9fLO13F/W7qX0W1LmZGB43XLyD9GO6 BTf4R2DJWDPZLEMRoBaL2ebUpGwnN5uJ3fQJJlCzqib+givFxciMOxvSY14sTaxD FK1AFg== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdgeq2dc7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:46 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84a4d8fd6deso1635992b3a.3 for ; Tue, 14 Jul 2026 10:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049525; x=1784654325; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=z+8csztsVkxJLpwMf2eNf9DbwNaVLmwQIwSKFspXvgQ=; b=UOEbs00bAGkDO2vCVb04C8epGhSIQ6crNT8EXzkSrvknyYd217unoBFTnkWUO1mInr qBXMsj2zxgAUF0O/6B6e7iAXmCX+Qs2ZI7z/5Yt3h7QGKtxsSwBgqSGN9vra/UYmiXY8 vF2doAo+pO29qwGyUsRHjj8TWOWInead9Ot2IKjrU5mQL69hJcwu3WeHNlDLoTJkAutW cKb+YByrWfZyeJsG9dLqvd60IWPPBzJxTw+2mK1YmHPigxGIcotWhG9S1oFRPd/zFTxX 2+JLkUCzWL0IbtH/ghFZV5xq+b4YcQ1l0Zzi1UVQ6kKW945WowyBRlaktA6ymN89WnfM Ywjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049525; x=1784654325; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=z+8csztsVkxJLpwMf2eNf9DbwNaVLmwQIwSKFspXvgQ=; b=STW2itXNB4Y4TRV2THCSb6FgpLS89n+ousXUpGSfkvGwsMnxY9sIcWwb2oEXvtH+aR kdEtXfSXugEPdJEkvymAyQwbe3ZLZ0eTAvgrzR9ms0ZDBIQ3zJHBJgpVVtB2icqRSuto Loh+zUD7VR0bhhx7PKezfVRJvZGnqTSHvnt9xkbmuNClMdLN/v1WjRmHyr/5LXolQk4j H8q4h7y4Z3dVHWcYwfhjxKeG2QXQktbOfdanscKxDrFsSHZQ8kBnAp0Rrodn1tLT/iKD Sa23JcvW2YvPw6+m4NuP6uWuEkIPdBuBed4W2MUi1TIZYF7WjB9IjwsiUNsBWdp+bUTo sV7w== X-Forwarded-Encrypted: i=1; AHgh+RpGrmazjwkaYyUufhh1ewdUVS6XBN0MELaSfWW2c8X9PJO8jawHEtS4VzhKPGU34sdpXYydL5NWyElaHXo=@vger.kernel.org X-Gm-Message-State: AOJu0YzUDhwNUFCqzvJ7704o/hfHkOcF4wNV0pUDfkScQwC05e7nvA8Q U5cWeJr5HkLTRHZMZuqhjsM7Nt8Rsst6/YcaCAcb+rP1ugneJS7XjJFIpd2bV3L6yST0Grimlui Ou1TvvHhP+i0OK5nL21lTgCqhBvDFLiNZhS8LOOanoGEgMETFgehExjjjhS3HYnkXlhU= X-Gm-Gg: AfdE7cloIxW1s32KF5Oh/2EU2Bhjf2UtuHUfHniNCbTWdJni/QeJWn8mVxYNT8dqytX Vn0P2SWzoUVsalpaerSDXc2iA0nMKCPSv8nFqcDbr5D0bv4cau1ROlwFLZBKx2iKslFxapBME// AjcU9UBTeaOrPwlGiXlv34FB1An+b1ZR9XTTAW9mSUzC8K/b+g5u7hst70pNOAfgOwxWeh+9ct8 a7t7BxeW5D8GbiUg4Y3kpsPoqhLTkqSRzxTA5DSGAkBGZXqdc7DPDIAcpLBmQvjnyXIMhsTVf/f io7eSAPniwVQTPDeJS6DlJxwEIF0EQNRbI0yrDbTTEw2mXrlbouX63fszWNUptDTMhGhdH4C22n +mLm1qE0xrI4BCQBSSsFQ92rgDGJ9ZK0OI2mt1V+lXryIS9k= X-Received: by 2002:a05:6a00:22c9:b0:848:5951:ff78 with SMTP id d2e1a72fcca58-848897d2bc7mr12968022b3a.36.1784049525224; Tue, 14 Jul 2026 10:18:45 -0700 (PDT) X-Received: by 2002:a05:6a00:22c9:b0:848:5951:ff78 with SMTP id d2e1a72fcca58-848897d2bc7mr12967962b3a.36.1784049524575; Tue, 14 Jul 2026 10:18:44 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.18.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:44 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:40 +0530 Subject: [PATCH v23 12/13] arm64: dts: qcom: Add psci reboot-modes for monaco boards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-12-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=2076; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=kOJzOHPbdhQsKmeQIeYy6G9x3fc90kQ54JK6p6ylG7k=; b=ESGx5r3AQTBnDLh7oNOdrBzmCSNSjUnfykfNHJyYl+Z9qNPaSE/ou7JEMTQ65oKELFQeNIKrf gNtsrQ7u/c0DYCpwV0Jha+KGoHoHt0fDHHSiGc934ncbOOknuX05b9L X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX+9wOIK3LzUqm oMjRHVobHRjbriCp9d4uEcfevP0PbflSXFIvSdOuY3HRMmOlersFhj3Pbeona/0TT9P/7L7PQgO SF8jkc7cjnN1Vfzu/IeTdiHI7v14XHpwQAXJlcSEVgnFjq6y4eo8sb+5xfRDW7VqNzbRMNI7rOc Gx18rJBrpOFEeT2V+bI6pD51UB++WHJecQUyaZQK35LiZHcgjiL/NAj6XptM4cNvIvbzNZNfpmx fKI7LJQZh3szL/JqwWob2k+7mORXKZugmdYDruAYg2AdnkdgVxQYj7qampPhTM33DjFmSAtx8ob tCO1maphLF6W3MusAhgYqeOwQDZQ9FQwgSRCUv6EFRTXHVL2Zw0NgO4pxLIcjYvYDZGArMZK9RI 2C03pg5mc89UhzHAtSJjoKM1cocq5pVAuywhvyCO4a2nbovNm8W4nWpiP2SrRkaFeDleeIQ2MoZ jDNKQyL771AOpLrnLnQ== X-Proofpoint-GUID: a7cZO4RjMHlVf45mW1vunhB8VQvbRCvM X-Proofpoint-ORIG-GUID: a7cZO4RjMHlVf45mW1vunhB8VQvbRCvM X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX+dLUOUz+xYEM s/gfGbOyvexgdL96f3WgrMcre6V2rgt/e/X6Gx9Kep9FeRYKXijgez3irTJb0+dbtTpaWjDL8RW XKlRV1XDyeInfkeplt0P6c6BEETretA= X-Authority-Analysis: v=2.4 cv=V9VNF+ni c=1 sm=1 tr=0 ts=6a566f76 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=t9IVmYW30V31rltyR78A:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 Add PSCI SYSTEM_RESET2 reboot-modes for monaco-evk and qcs8300-ride for use by the psci-reboot-mode driver. The following modes are defined: - bootloader: reboot into fastboot mode for fastboot flashing. - edl: reboot into emergency download mode for image loading via the Firehose protocol. Support for these modes is firmware dependent. Reviewed-by: Bartosz Golaszewski Signed-off-by: Shivendra Pratap --- arch/arm64/boot/dts/qcom/monaco-evk.dts | 7 +++++++ arch/arm64/boot/dts/qcom/monaco.dtsi | 2 +- arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/monaco-evk.dts b/arch/arm64/boot/dts/= qcom/monaco-evk.dts index 9d17ef7d2caf..df668dbf2bc6 100644 --- a/arch/arm64/boot/dts/qcom/monaco-evk.dts +++ b/arch/arm64/boot/dts/qcom/monaco-evk.dts @@ -661,6 +661,13 @@ usb2_id: usb2-id-state { }; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qup_i2c0_data_clk { drive-strength =3D <2>; bias-pull-up; diff --git a/arch/arm64/boot/dts/qcom/monaco.dtsi b/arch/arm64/boot/dts/qco= m/monaco.dtsi index 64fc0d592282..824ec3838c75 100644 --- a/arch/arm64/boot/dts/qcom/monaco.dtsi +++ b/arch/arm64/boot/dts/qcom/monaco.dtsi @@ -654,7 +654,7 @@ pmu-a78 { interrupts =3D ; }; =20 - psci { + psci: psci { compatible =3D "arm,psci-1.0"; method =3D "smc"; =20 diff --git a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts b/arch/arm64/boot/dt= s/qcom/qcs8300-ride.dts index e9a8553a8d82..3ab5ae3124ed 100644 --- a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts +++ b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts @@ -678,6 +678,13 @@ &mdss_dsi0_out { remote-endpoint =3D <&dsi2dp_bridge_in>; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qupv3_id_0 { status =3D "okay"; }; --=20 2.34.1 From nobody Sat Jul 25 18:54:50 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43C2F305699 for ; Tue, 14 Jul 2026 17:18:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049538; cv=none; b=MPcuEgv7oHMraYmB+K0pPBkenskTHE2WhpL168WyI71KxQ37sOEuiaxDskDYh53k0kZ+HizEKWIkU+q9wlog0qO0TIEyH6fe21C1PpZXLzKaO9ep9wr20DwpAOZpQ1AH+srf/Yh2+GWnwAH9pZfMIbnTc0nuogskNVqzBJx07nc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784049538; c=relaxed/simple; bh=/qLMtF4YYOHcd2N1W678IQPXyBmX86FCA/XfWBXjocw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pxtz1nTwaAZ9rOLV4hTfhDsd5eFz/7XedFuTS0Zd4Qo5g6g1LA0KE/J9bAvG2QuMfSLO0rpqDphNCwuLUZrFYK4fEBObfSgn6A4eMewydc4r+IcZYsIAMgUQcDlTxmA0FtXcFrCTm63P/SuOIHwvxVVQeHcExWgBOpfOO6KIYDM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=G0qCDEZ1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Fyk6JADB; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="G0qCDEZ1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Fyk6JADB" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66EG6wLw1097300 for ; Tue, 14 Jul 2026 17:18:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= WlWwBUz8oIiLyO7bjGs1oO3T6bcXCkYkZ3ytXjL7maA=; b=G0qCDEZ17DRS3o0E 11ggJ5j39opLgDxXNK/d/wONKxa0fVnp1j9mZQfJ5c51xMnCvqSw+AjQ/xNUsThs 5KAB7Hc+Lv2RM8XL5wMX1Ojr14IumaPWXwjjM/thnV186H5c+BEnH9Rf6wpe/f9f Kgwl7uwHWicwx2y3C1mf+uCPeo7zX7Aig/AfPDNNg21mJCe4OpgOp5jnlQcRKgsA 1Senm7UsHKP73EwEWGE/ApfeigX/PZY9w0UekDDkNY1tqyApbxNJ3uMlFAqx6/wx RQCeM9HFe8/pZuIDQao7b16GfptJPaP2zchdS2djMOIDbzhBlw1EluvDwEd2bJzT RvMu9w== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fdnnqs3ye-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 17:18:56 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-84885a4fcabso1613268b3a.3 for ; Tue, 14 Jul 2026 10:18:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784049535; x=1784654335; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WlWwBUz8oIiLyO7bjGs1oO3T6bcXCkYkZ3ytXjL7maA=; b=Fyk6JADByf8pihKmgB9KVDx0IvVW7QbC7XbKs/CiAE292mqCdiNvGeuLd5+7L5sA1k /YfrnUmm5sG1+ommHZPMQr5iWj5t5ChydpioGK6ajIzcR+tD5uc7GEV7Q+YR/fPzWtRo ZV7l7Myak40rQkio2nGh2/RiVKfzwM6LX8NI4p+zUVxLFXrLy2kE7ANaNLE5dDoeNC/D tnXkjpTNs+Bq8W2e99e3Q++j1NHI90T/R5xUJT7ZyW4y2Qb2ChVgY9E54YFcgJPfGVsi y/xcjw3G00KC9iHPnY142H4qXSTrFJYoZ/+59F9Qjed9AzcpL1GUUL0wVQIJGoYoz32/ S8Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784049535; x=1784654335; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=WlWwBUz8oIiLyO7bjGs1oO3T6bcXCkYkZ3ytXjL7maA=; b=gaqjfygbfw41neeDDNJGlFsYZVqV2tnTJuoIMg7KyTZ6GwP0Qyy2MqYVVf1voEt/6q HT6XJGZ4RqGDN80oEu9ML5Ih+2AmOT4VMsqloECoIijAVi5vIYahjWk62t/R/5cW3/Ex HCdTJk6rs5N3sYodwlkETGnq+lyW0Av/SWn9FlXQKStp+qPsalBEDwtkWOa4E2hORDKP FWXf8z+p4FC3MvwNnzAdERaZE5un/XIYp5vGZaNqiApTFs4ZkeJKxQACVq5zv/H/Jm5i GuzDgylOYPWZd2KuypyPUdSIP5BFwb2m6Hf2pHcfJA14+6blecwER+oiZwy/yIimOTwG mvRg== X-Forwarded-Encrypted: i=1; AHgh+RrcLEM3VIhHAoRIBSwLi0WGgT02v1tVeXykxnHP+nnBJJS6pzajjdtGSa++FH5iDQmafpJyO4fUX0uSUa4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8SniP7lZQMMnIRbsWxgZbE4c4u4hFmhwcMDB+RYY6vygTNRs0 MSeSsj7ber1h/Zw0QAAWsbfNJO9DvYt4tXfm6t841RwOdh/s3eeQ+xOoyD3TuZi1LEaU0ckGYz5 +1+dtbx/rqkw3TZlMPW+KplUMGWUdWPEc5Q9FvPe0YuHez8Y38lHFvTCD2f9UFgyIbu8= X-Gm-Gg: AfdE7ckBxrOKuD3QjgBuin+MR4gOG8QyYwUV/YnZP3S//DHQJAZXQBEpJM9ytUoeOQn M3tb5vANRZRCIg4KzCqEg/DO/5u02wjeSfYs73nGEUbJ1Jx+P3G7ptGeW6YKFsz0MdAM3sR0ycQ F2GVjIcDAdMRwhwymDoQCgBOi6rhYShObYdbqI0qQwTQOvEGkop6CGrE4qCksQj0UfJSxhIMmPM dwOhrXzOvVbe9aCubebH2DM/zGkphIyFZmjXvHQLr0/sKn5DiPDX8H2cLr7zKfpW3fmm9R3WmtR /EHLTSSgzXBeckc4Yh/kLme354z7yeTu6dwOTGJ8CaAQWiP526att8Lc8qyg7W4F6oQtq41UZFE 0b1fsagnZ16R8T+FdJxAT9h6t6ZNsnkonkF5K4y1gZFidnY0= X-Received: by 2002:a05:6a00:1741:b0:845:e1a3:107e with SMTP id d2e1a72fcca58-848896eb340mr13731431b3a.52.1784049535195; Tue, 14 Jul 2026 10:18:55 -0700 (PDT) X-Received: by 2002:a05:6a00:1741:b0:845:e1a3:107e with SMTP id d2e1a72fcca58-848896eb340mr13731384b3a.52.1784049534635; Tue, 14 Jul 2026 10:18:54 -0700 (PDT) Received: from hu-spratap-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84a5bfcc2e5sm731773b3a.56.2026.07.14.10.18.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 10:18:54 -0700 (PDT) From: Shivendra Pratap Date: Tue, 14 Jul 2026 22:46:41 +0530 Subject: [PATCH v23 13/13] arm64: dts: qcom: Add psci reboot-modes for talos boards Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-arm-psci-system_reset2-vendor-reboots-v23-13-e7453c548c21@oss.qualcomm.com> References: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> In-Reply-To: <20260714-arm-psci-system_reset2-vendor-reboots-v23-0-e7453c548c21@oss.qualcomm.com> To: Sebastian Reichel , Mark Rutland , Lorenzo Pieralisi , "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Souvik Chakravarty , Andy Yan , Matthias Brugger , John Stultz , Moritz Fischer , Bartosz Golaszewski , Sudeep Holla , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Shivendra Pratap , Florian Fainelli , Krzysztof Kozlowski , Dmitry Baryshkov , Mukesh Ojha , Andre Draszik , Greg Kroah-Hartman , Kathiravan Thirumoorthy , mfd@lists.linux.dev, Srinivas Kandagatla , Bartosz Golaszewski , Song Xue X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784049398; l=1558; i=shivendra.pratap@oss.qualcomm.com; s=20250710; h=from:subject:message-id; bh=/qLMtF4YYOHcd2N1W678IQPXyBmX86FCA/XfWBXjocw=; b=rUE2oOT0yyF7AuITx714xgSvucEBSc9KhTWpFSLaurtFc1XMsG6TrtEbHt/m+uYS94IanfqNZ NwgxWKW/LsVC7sB2UWTCKChhYXd85Mq58VSCviNCWEBEwY4SaEZPtkL X-Developer-Key: i=shivendra.pratap@oss.qualcomm.com; a=ed25519; pk=CpsuL7yZ8NReDPhGgq6Xn/SRoa59mAvzWOW0QZoo4gw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX9XyJ9iF9JxaO 3eyKdLy+V0UwQiQpFA1Gyba6dNAQpvUO10ouPCb7tgljYJv6bdxr/7GdMe/5hne+/pgkzysINtD WPOhvlqCm9W3jn4spGkCUtuxLk/DJBzsIf/OdNG9eAG67fT6q/wLG9lQSgbAARQ5XESs+9Tajwm vPioEB4Y4RElCfbeZDCQ4YV7NmV+zNuwhJlgi1ruXJTJ5F4u6aiRmQw1ZMgK+hk77GCp/nsgCm8 WqvCIcc6VHR9JjYQzmTBWuf24sa0Os0zZ9UYepFPFQvda+daeIkScor3zDBJgLucSlpm4Slh4ie YewylLiuosd1VdzoV3WwuH3sa1GXumeMWgRXO5JrHUrmXLgWkE9me76TIaoaya5AO6fXkWcaSnK vl/H0bvruxjRyiIMof1vn+z+kJpCq9X5FaZ2umjiVtXUQTkrq9GuHBrhkvP1iZMhZKz59t4k0/B 0tNCtlkHzVjaksAaD3w== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDE3OCBTYWx0ZWRfX8/BbZH6UiqGP ibSVQUmV27NHbhrTaQ9XmwKft95RmWk9wUsIaZfRC1MQLZP1FUIQEunMfsLJdZXudVsPZ8vrct5 2cVDIjvCAvZ6OBwZ5h5cuuobJdxCFO4= X-Authority-Analysis: v=2.4 cv=U+Oiy+ru c=1 sm=1 tr=0 ts=6a566f80 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=COk6AnOGAAAA:8 a=bjH5yOvFM8yfI_BY5k4A:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: 7mHjEgT3UFguISTJ0u00CAw7VRmn8M2s X-Proofpoint-ORIG-GUID: 7mHjEgT3UFguISTJ0u00CAw7VRmn8M2s X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-14_04,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140178 Add PSCI SYSTEM_RESET2 reboot-modes for qcs615-ride, for use by the psci-reboot-mode driver. The following modes are defined: - bootloader: reboot into fastboot mode for fastboot flashing. - edl: reboot into emergency download mode for image loading via the Firehose protocol. Support for these modes is firmware dependent. Reviewed-by: Bartosz Golaszewski Signed-off-by: Song Xue Signed-off-by: Shivendra Pratap --- arch/arm64/boot/dts/qcom/qcs615-ride.dts | 7 +++++++ arch/arm64/boot/dts/qcom/talos.dtsi | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts= /qcom/qcs615-ride.dts index 047b4efb04b9..48d3519f50ff 100644 --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts @@ -498,6 +498,13 @@ &pon_resin { status =3D "okay"; }; =20 +&psci { + reboot-mode { + mode-bootloader =3D <0x80010001 0x2>; + mode-edl =3D <0x80000000 0x1>; + }; +}; + &qspi { status =3D "okay"; =20 diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom= /talos.dtsi index bdfb70ca9740..6a7ce5a2963a 100644 --- a/arch/arm64/boot/dts/qcom/talos.dtsi +++ b/arch/arm64/boot/dts/qcom/talos.dtsi @@ -581,7 +581,7 @@ pmu-a76 { interrupts =3D ; }; =20 - psci { + psci: psci { compatible =3D "arm,psci-1.0"; method =3D "smc"; =20 --=20 2.34.1