LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Ronak Jain <ronak.jain@xilinx.com>
To: <michal.simek@xilinx.com>, <linux-kernel@vger.kernel.org>
Cc: <gregkh@linuxfoundation.org>, <rajan.vaja@xilinx.com>,
	<corbet@lwn.net>, <linux-arm-kernel@lists.infradead.org>,
	<arnd@arndb.de>, <lakshmi.sai.krishna.potthuri@xilinx.com>,
	Ronak Jain <ronak.jain@xilinx.com>
Subject: [PATCH 1/3] firmware: xilinx: Add support for runtime features
Date: Tue, 17 Aug 2021 06:05:51 -0700	[thread overview]
Message-ID: <20210817130553.20219-2-ronak.jain@xilinx.com> (raw)
In-Reply-To: <20210817130553.20219-1-ronak.jain@xilinx.com>

Add support for runtime features by using an IOCTL call. The features
 can be enabled or disabled on the firmware as well as the features
 can configure at runtime by querying IOCTL_SET_FEATURE_CONFIG id.
 Similarly, the user can get the configured values of features by
 querying IOCTL_GET_FEATURE_CONFIG id. Here, we have added support for
 the over temperature and external watchdog features only.

Signed-off-by: Ronak Jain <ronak.jain@xilinx.com>
---
 drivers/firmware/xilinx/zynqmp.c     | 27 +++++++++++++++++++++++++++
 include/linux/firmware/xlnx-zynqmp.h | 25 +++++++++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c
index 15b138326ecc..e2b0a8fb6f44 100644
--- a/drivers/firmware/xilinx/zynqmp.c
+++ b/drivers/firmware/xilinx/zynqmp.c
@@ -1049,6 +1049,33 @@ int zynqmp_pm_system_shutdown(const u32 type, const u32 subtype)
                                   0, 0, NULL);
 }

+/**
+ * zynqmp_pm_set_feature_config - PM call to request IOCTL for feature config
+ * @id:         The config ID of the feature to be configured
+ * @value:      The config value of the feature to be configured
+ *
+ * Return:      Returns 0 on success or error value on failure.
+ */
+int zynqmp_pm_set_feature_config(enum pm_feature_config_id id, u32 value)
+{
+       return zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_SET_FEATURE_CONFIG,
+                                  id, value, NULL);
+}
+
+/**
+ * zynqmp_pm_get_feature_config - PM call to get value of configured feature
+ * @id:         The config id of the feature to be queried
+ * @payload:    Returned value array
+ *
+ * Return:      Returns 0 on success or error value on failure.
+ */
+int zynqmp_pm_get_feature_config(enum pm_feature_config_id id,
+                                u32 *payload)
+{
+       return zynqmp_pm_invoke_fn(PM_IOCTL, 0, IOCTL_GET_FEATURE_CONFIG,
+                                  id, 0, payload);
+}
+
 /**
  * struct zynqmp_pm_shutdown_scope - Struct for shutdown scope
  * @subtype:   Shutdown subtype
diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h
index 9d1a5c175065..06d82e334d2b 100644
--- a/include/linux/firmware/xlnx-zynqmp.h
+++ b/include/linux/firmware/xlnx-zynqmp.h
@@ -119,6 +119,9 @@ enum pm_ioctl_id {
        IOCTL_READ_PGGS = 15,
        /* Set healthy bit value */
        IOCTL_SET_BOOT_HEALTH_STATUS = 17,
+       /* Runtime feature configuration */
+       IOCTL_SET_FEATURE_CONFIG = 26,
+       IOCTL_GET_FEATURE_CONFIG = 27,
 };

 enum pm_query_id {
@@ -347,6 +350,14 @@ enum zynqmp_pm_shutdown_subtype {
        ZYNQMP_PM_SHUTDOWN_SUBTYPE_SYSTEM = 2,
 };

+enum pm_feature_config_id {
+       PM_FEATURE_INVALID = 0,
+       PM_FEATURE_OVERTEMP_STATUS = 1,
+       PM_FEATURE_OVERTEMP_VALUE = 2,
+       PM_FEATURE_EXTWDT_STATUS = 3,
+       PM_FEATURE_EXTWDT_VALUE = 4,
+};
+
 /**
  * struct zynqmp_pm_query_data - PM query data
  * @qid:       query ID
@@ -411,6 +422,8 @@ int zynqmp_pm_pinctrl_get_config(const u32 pin, const u32 param,
                                 u32 *value);
 int zynqmp_pm_pinctrl_set_config(const u32 pin, const u32 param,
                                 u32 value);
+int zynqmp_pm_set_feature_config(enum pm_feature_config_id id, u32 value);
+int zynqmp_pm_get_feature_config(enum pm_feature_config_id id, u32 *payload);
 #else
 static inline int zynqmp_pm_get_api_version(u32 *version)
 {
@@ -622,6 +635,18 @@ static inline int zynqmp_pm_pinctrl_set_config(const u32 pin, const u32 param,
 {
        return -ENODEV;
 }
+
+static inline int zynqmp_pm_set_feature_config(enum pm_feature_config_id id,
+                                              u32 value)
+{
+       return -ENODEV;
+}
+
+static inline int zynqmp_pm_get_feature_config(enum pm_feature_config_id id,
+                                              u32 *payload)
+{
+       return -ENODEV;
+}
 #endif

 #endif /* __FIRMWARE_ZYNQMP_H__ */
--
2.32.0.93.g670b81a

This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

  reply	other threads:[~2021-08-17 13:06 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-17 13:05 [PATCH 0/3] " Ronak Jain
2021-08-17 13:05 ` Ronak Jain [this message]
2021-08-17 13:05 ` [PATCH 2/3] firmware: zynqmp: Add sysfs entry " Ronak Jain
2021-08-17 13:05 ` [PATCH 3/3] firmware: xilinx: Add sysfs support for feature config Ronak Jain
2021-08-18  6:43 ` [PATCH 0/3] Add support for runtime features Michael Tretter
2021-08-18  8:08 ` Greg KH
2021-08-19  3:57   ` Ronak Jain

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=20210817130553.20219-2-ronak.jain@xilinx.com \
    --to=ronak.jain@xilinx.com \
    --cc=arnd@arndb.de \
    --cc=corbet@lwn.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=lakshmi.sai.krishna.potthuri@xilinx.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.simek@xilinx.com \
    --cc=rajan.vaja@xilinx.com \
    --subject='Re: [PATCH 1/3] firmware: xilinx: Add support for runtime features' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).