U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Sumit Garg <sumit.garg@kernel.org>
To: Varadarajan Narayanan <quic_varada@quicinc.com>
Cc: trini@konsulko.com, caleb.connolly@linaro.org,
	neil.armstrong@linaro.org, sjg@chromium.org,
	ilias.apalodimas@linaro.org, sughosh.ganu@linaro.org,
	me@samcday.com, marex@denx.de, robert.marko@sartura.hr,
	seashell11234455@gmail.com, ycliang@andestech.com,
	u-boot-qcom@groups.io, u-boot@lists.denx.de
Subject: Re: [PATCH v1 2/3] sysreset: Implement PSCI based reset to EDL mode for QCOM SoCs
Date: Mon, 28 Apr 2025 14:06:04 +0530	[thread overview]
Message-ID: <aA899AN_E1dURnWs@sumit-X1> (raw)
In-Reply-To: <20250410120208.4142087-3-quic_varada@quicinc.com>

On Thu, Apr 10, 2025 at 05:32:07PM +0530, Varadarajan Narayanan wrote:
> Add SYSRESET_EDL to sysreset_t and handle the different SYSRESET_xxx
> requests in sysreset_qcom-psci.c.

Kindly add ellborative commit message as to what problem you are trying
to address here and what is actually EDL mode? Is it specific to Qcom
platforms or does any other silicon vendor supports similar method?

> 
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
>  drivers/sysreset/Kconfig              |  5 +++
>  drivers/sysreset/Makefile             |  1 +
>  drivers/sysreset/sysreset-uclass.c    |  7 ++--
>  drivers/sysreset/sysreset_qcom-psci.c | 47 +++++++++++++++++++++++++++
>  include/sysreset.h                    |  2 ++
>  5 files changed, 60 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/sysreset/sysreset_qcom-psci.c
> 
> diff --git a/drivers/sysreset/Kconfig b/drivers/sysreset/Kconfig
> index 121194e4418..a6a1e57b603 100644
> --- a/drivers/sysreset/Kconfig
> +++ b/drivers/sysreset/Kconfig
> @@ -240,6 +240,11 @@ config SYSRESET_RAA215300
>  	help
>  	  Add support for the system reboot via the Renesas RAA215300 PMIC.
>  
> +config SYSRESET_QCOM_PSCI
> +	bool "Support sysreset for Qualcomm SoCs via PSCI"
> +	help
> +	  Add support for the system reboot on Qualcomm SoCs via PSCI.

Ellaborate here to mention support for poweroff and EDL mode.

> +
>  config SYSRESET_QCOM_PSHOLD
>  	bool "Support sysreset for Qualcomm SoCs via PSHOLD"
>  	depends on ARCH_IPQ40XX
> diff --git a/drivers/sysreset/Makefile b/drivers/sysreset/Makefile
> index 796fc9effa5..12dbad5254a 100644
> --- a/drivers/sysreset/Makefile
> +++ b/drivers/sysreset/Makefile
> @@ -29,5 +29,6 @@ obj-$(CONFIG_SYSRESET_RESETCTL) += sysreset_resetctl.o
>  obj-$(CONFIG_$(PHASE_)SYSRESET_AT91) += sysreset_at91.o
>  obj-$(CONFIG_$(PHASE_)SYSRESET_X86) += sysreset_x86.o
>  obj-$(CONFIG_SYSRESET_RAA215300) += sysreset_raa215300.o
> +obj-$(CONFIG_SYSRESET_QCOM_PSCI) += sysreset_qcom-psci.o
>  obj-$(CONFIG_SYSRESET_QCOM_PSHOLD) += sysreset_qcom-pshold.o
>  obj-$(CONFIG_TARGET_XTFPGA) += sysreset_xtfpga.o
> diff --git a/drivers/sysreset/sysreset-uclass.c b/drivers/sysreset/sysreset-uclass.c
> index 536ac727142..d06c0a6908a 100644
> --- a/drivers/sysreset/sysreset-uclass.c
> +++ b/drivers/sysreset/sysreset-uclass.c
> @@ -125,8 +125,11 @@ int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>  	if (argc > 2)
>  		return CMD_RET_USAGE;
>  
> -	if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'w') {
> -		reset_type = SYSRESET_WARM;
> +	if (argc == 2) {
> +		if (argv[1][0] == '-' && argv[1][1] == 'w')
> +			reset_type = SYSRESET_WARM;
> +		else if (!strncmp("edl", argv[1], 3))

Try to follow existing pattern "reset -w" like "reset -edl".

> +			reset_type = SYSRESET_EDL;
>  	}
>  
>  	printf("resetting ...\n");
> diff --git a/drivers/sysreset/sysreset_qcom-psci.c b/drivers/sysreset/sysreset_qcom-psci.c
> new file mode 100644
> index 00000000000..3afb79e2d2e
> --- /dev/null
> +++ b/drivers/sysreset/sysreset_qcom-psci.c
> @@ -0,0 +1,47 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2017 Masahiro Yamada <yamada.masahiro@socionext.com>

Forgot to append copyright here?

> + */
> +
> +#include <dm.h>
> +#include <sysreset.h>
> +#include <asm/system.h>
> +#include <linux/errno.h>
> +#include <linux/psci.h>
> +
> +__weak int qcom_psci_sysreset_get_status(struct udevice *dev, char *buf, int size)

Why is it declared weak?

> +{
> +	return -EOPNOTSUPP;
> +}
> +
> +static int qcom_psci_sysreset_request(struct udevice *dev, enum sysreset_t type)
> +{
> +	switch (type) {
> +	case SYSRESET_WARM:
> +	case SYSRESET_COLD:
> +		psci_sys_reset(type);
> +		break;
> +	case SYSRESET_POWER_OFF:
> +		psci_sys_poweroff();
> +		break;
> +	case SYSRESET_EDL:
> +		psci_system_reset2(0, 1);
> +		break;
> +	default:
> +		return -EPROTONOSUPPORT;
> +	}
> +
> +	return -EINPROGRESS;
> +}
> +
> +static struct sysreset_ops qcom_psci_sysreset_ops = {
> +	.request = qcom_psci_sysreset_request,
> +	.get_status = qcom_psci_sysreset_get_status,
> +};
> +
> +U_BOOT_DRIVER(qcom_psci_sysreset) = {
> +	.name = "qcom_psci-sysreset",
> +	.id = UCLASS_SYSRESET,
> +	.ops = &qcom_psci_sysreset_ops,
> +	.flags = DM_FLAG_PRE_RELOC,
> +};
> diff --git a/include/sysreset.h b/include/sysreset.h
> index ff20abdeed3..8bda9703cd9 100644
> --- a/include/sysreset.h
> +++ b/include/sysreset.h
> @@ -21,6 +21,8 @@ enum sysreset_t {
>  	SYSRESET_POWER,
>  	/** @SYSRESET_POWER_OFF: turn off power */
>  	SYSRESET_POWER_OFF,
> +	/** @SYSRESET_EDL: reset and boot into Emergency DownLoader */

Is it Qcom specific then add proper comments here?

-Sumit

> +	SYSRESET_EDL,
>  	/** @SYSRESET_COUNT: number of available reset types */
>  	SYSRESET_COUNT,
>  };
> -- 
> 2.34.1
> 

  reply	other threads:[~2025-04-28  8:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-10 12:02 [PATCH v1 0/3] Implement reset to EDL for qcs9100 Varadarajan Narayanan
2025-04-10 12:02 ` [PATCH v1 1/3] mach-snapdragon: Do not define reset_cpu() if SYSRESET is enabled Varadarajan Narayanan
2025-04-28  8:24   ` Sumit Garg
2025-04-28  8:28     ` Sam Day
2025-04-28 13:58   ` Casey Connolly
2025-04-10 12:02 ` [PATCH v1 2/3] sysreset: Implement PSCI based reset to EDL mode for QCOM SoCs Varadarajan Narayanan
2025-04-28  8:36   ` Sumit Garg [this message]
2025-04-28 14:22   ` Casey Connolly
2025-04-29 11:40     ` Varadarajan Narayanan
2025-04-29 21:02     ` Sam Day
2025-04-30  8:57     ` Varadarajan Narayanan
2025-04-10 12:02 ` [PATCH v1 3/3] configs: qcs9100_defconfig: Enable SYSRESET Varadarajan Narayanan
2025-04-28  8:36   ` Sumit Garg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aA899AN_E1dURnWs@sumit-X1 \
    --to=sumit.garg@kernel.org \
    --cc=caleb.connolly@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=marex@denx.de \
    --cc=me@samcday.com \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_varada@quicinc.com \
    --cc=robert.marko@sartura.hr \
    --cc=seashell11234455@gmail.com \
    --cc=sjg@chromium.org \
    --cc=sughosh.ganu@linaro.org \
    --cc=trini@konsulko.com \
    --cc=u-boot-qcom@groups.io \
    --cc=u-boot@lists.denx.de \
    --cc=ycliang@andestech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox