lkml.org 
[lkml]   [2023]   [May]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v3 18/18] firmware: qcom_scm: Add multiple download mode support
Date
Currently, scm driver only supports full dump when download
mode is selected. Add support to enable minidump as well as
enable it along with fulldump.

Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
---
drivers/firmware/qcom_scm.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index 4e8fd4e..be7adc6 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -32,6 +32,8 @@ static u32 download_mode;

#define QCOM_DOWNLOAD_MODE_MASK 0x30
#define QCOM_DOWNLOAD_FULLDUMP 0x1
+#define QCOM_DOWNLOAD_MINIDUMP 0x2
+#define QCOM_DOWNLOAD_BOTHDUMP (QCOM_DOWNLOAD_FULLDUMP | QCOM_DOWNLOAD_MINIDUMP)
#define QCOM_DOWNLOAD_NODUMP 0x0

struct qcom_scm {
@@ -1422,13 +1424,16 @@ static irqreturn_t qcom_scm_irq_handler(int irq, void *data)
return IRQ_HANDLED;
}

-
static int get_download_mode(char *buffer, const struct kernel_param *kp)
{
int len = 0;

if (download_mode == QCOM_DOWNLOAD_FULLDUMP)
len = sysfs_emit(buffer, "full\n");
+ else if (download_mode == QCOM_DOWNLOAD_MINIDUMP)
+ len = sysfs_emit(buffer, "mini\n");
+ else if (download_mode == QCOM_DOWNLOAD_BOTHDUMP)
+ len = sysfs_emit(buffer, "full,mini\n");
else if (download_mode == QCOM_DOWNLOAD_NODUMP)
len = sysfs_emit(buffer, "off\n");

@@ -1439,8 +1444,12 @@ static int set_download_mode(const char *val, const struct kernel_param *kp)
{
u32 old = download_mode;

- if (sysfs_streq(val, "full")) {
+ if (sysfs_streq(val, "full,mini") || sysfs_streq(val, "mini,full")) {
+ download_mode = QCOM_DOWNLOAD_BOTHDUMP;
+ } else if (sysfs_streq(val, "full")) {
download_mode = QCOM_DOWNLOAD_FULLDUMP;
+ } else if (sysfs_streq(val, "mini")) {
+ download_mode = QCOM_DOWNLOAD_MINIDUMP;
} else if (sysfs_streq(val, "off")) {
download_mode = QCOM_DOWNLOAD_NODUMP;
} else if (kstrtouint(val, 0, &download_mode) ||
@@ -1463,7 +1472,7 @@ static const struct kernel_param_ops download_mode_param_ops = {

module_param_cb(download_mode, &download_mode_param_ops, NULL, 0644);
MODULE_PARM_DESC(download_mode,
- "Download mode: off/full or 0/1 for existing users");
+ "download mode: off/full/mini/full,mini or mini,full and 0/1 for existing users");

static int qcom_scm_probe(struct platform_device *pdev)
{
--
2.7.4
\
 
 \ /
  Last update: 2023-05-03 19:22    [W:0.345 / U:0.388 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site