linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] thermal: int340x: processor_thermal: Add additional
@ 2021-05-17  6:14 Srinivas Pandruvada
  2021-05-17  6:14 ` [PATCH 1/2] thermal: int340x: processor_thermal: Export mailbox interface Srinivas Pandruvada
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Srinivas Pandruvada @ 2021-05-17  6:14 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang, amitk
  Cc: linux-pm, linux-kernel, Srinivas Pandruvada

Add additional attributes to RFIM, which use mailbox commands. 

Srinivas Pandruvada (2):
  thermal: int340x: processor_thermal: Export mailbox interface
  thermal: int340x: processor_thermal: Export additional attributes

 .../processor_thermal_device.h                |  2 +
 .../int340x_thermal/processor_thermal_mbox.c  | 12 +++-
 .../int340x_thermal/processor_thermal_rfim.c  | 55 +++++++++++++++++++
 3 files changed, 66 insertions(+), 3 deletions(-)

-- 
2.27.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] thermal: int340x: processor_thermal: Export mailbox interface
  2021-05-17  6:14 [PATCH 0/2] thermal: int340x: processor_thermal: Add additional Srinivas Pandruvada
@ 2021-05-17  6:14 ` Srinivas Pandruvada
  2021-05-17  6:14 ` [PATCH 2/2] thermal: int340x: processor_thermal: Export additional attributes Srinivas Pandruvada
  2021-07-06  8:26 ` [PATCH 0/2] thermal: int340x: processor_thermal: Add additional You-Sheng Yang
  2 siblings, 0 replies; 4+ messages in thread
From: Srinivas Pandruvada @ 2021-05-17  6:14 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang, amitk
  Cc: linux-pm, linux-kernel, Srinivas Pandruvada

Export the mailbox interface to be used by other modules. Also change
command id and response from u8 to u32 data type.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 .../intel/int340x_thermal/processor_thermal_device.h |  2 ++
 .../intel/int340x_thermal/processor_thermal_mbox.c   | 12 +++++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.h b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.h
index b9ed64561aaf..3161607424f5 100644
--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_device.h
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_device.h
@@ -79,4 +79,6 @@ void proc_thermal_rfim_remove(struct pci_dev *pdev);
 int proc_thermal_mbox_add(struct pci_dev *pdev, struct proc_thermal_device *proc_priv);
 void proc_thermal_mbox_remove(struct pci_dev *pdev);
 
+int processor_thermal_send_mbox_cmd(struct pci_dev *pdev, u16 cmd_id, u32 cmd_data, u32 *cmd_resp);
+
 #endif
diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c b/drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c
index 990f51f22884..59e93b04f0a9 100644
--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c
@@ -23,7 +23,7 @@
 
 static DEFINE_MUTEX(mbox_lock);
 
-static int send_mbox_cmd(struct pci_dev *pdev, u8 cmd_id, u32 cmd_data, u8 *cmd_resp)
+static int send_mbox_cmd(struct pci_dev *pdev, u16 cmd_id, u32 cmd_data, u32 *cmd_resp)
 {
 	struct proc_thermal_device *proc_priv;
 	u32 retries, data;
@@ -82,6 +82,12 @@ static int send_mbox_cmd(struct pci_dev *pdev, u8 cmd_id, u32 cmd_data, u8 *cmd_
 	return ret;
 }
 
+int processor_thermal_send_mbox_cmd(struct pci_dev *pdev, u16 cmd_id, u32 cmd_data, u32 *cmd_resp)
+{
+	return send_mbox_cmd(pdev, cmd_id, cmd_data, cmd_resp);
+}
+EXPORT_SYMBOL_GPL(processor_thermal_send_mbox_cmd);
+
 /* List of workload types */
 static const char * const workload_types[] = {
 	"none",
@@ -147,7 +153,7 @@ static ssize_t workload_type_show(struct device *dev,
 				   char *buf)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
-	u8 cmd_resp;
+	u32 cmd_resp;
 	int ret;
 
 	ret = send_mbox_cmd(pdev, MBOX_CMD_WORKLOAD_TYPE_READ, 0, &cmd_resp);
@@ -181,7 +187,7 @@ static bool workload_req_created;
 
 int proc_thermal_mbox_add(struct pci_dev *pdev, struct proc_thermal_device *proc_priv)
 {
-	u8 cmd_resp;
+	u32 cmd_resp;
 	int ret;
 
 	/* Check if there is a mailbox support, if fails return success */
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] thermal: int340x: processor_thermal: Export additional attributes
  2021-05-17  6:14 [PATCH 0/2] thermal: int340x: processor_thermal: Add additional Srinivas Pandruvada
  2021-05-17  6:14 ` [PATCH 1/2] thermal: int340x: processor_thermal: Export mailbox interface Srinivas Pandruvada
@ 2021-05-17  6:14 ` Srinivas Pandruvada
  2021-07-06  8:26 ` [PATCH 0/2] thermal: int340x: processor_thermal: Add additional You-Sheng Yang
  2 siblings, 0 replies; 4+ messages in thread
From: Srinivas Pandruvada @ 2021-05-17  6:14 UTC (permalink / raw)
  To: daniel.lezcano, rui.zhang, amitk
  Cc: linux-pm, linux-kernel, Srinivas Pandruvada

Export additional attributes:

ddr_data_rate (RO) : Show current DDR (Double Data Rate) data rate.
rfi_restriction (RW) : Show or set current state for RFI (Radio
			Frequency Interference) protection.

These attributes use mailbox commands to get/set information. Here
command codes are:
0x0007: Read RFI restriction
0x0107: Read DDR data rate
0x0008: Write RFI restriction

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 .../int340x_thermal/processor_thermal_rfim.c  | 55 +++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c b/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c
index aef993a813e2..2b8a3235d518 100644
--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c
@@ -190,6 +190,59 @@ static DEVICE_ATTR_RO(ddr_data_rate_point_2);
 static DEVICE_ATTR_RO(ddr_data_rate_point_3);
 static DEVICE_ATTR_RW(rfi_disable);
 
+static ssize_t rfi_restriction_store(struct device *dev,
+				     struct device_attribute *attr,
+				     const char *buf, size_t count)
+{
+	u16 cmd_id = 0x0008;
+	u32 cmd_resp;
+	u32 input;
+	int ret;
+
+	ret = kstrtou32(buf, 10, &input);
+	if (ret)
+		return ret;
+
+	ret = processor_thermal_send_mbox_cmd(to_pci_dev(dev), cmd_id, input, &cmd_resp);
+	if (ret)
+		return ret;
+
+	return count;
+}
+
+static ssize_t rfi_restriction_show(struct device *dev,
+				    struct device_attribute *attr,
+				    char *buf)
+{
+	u16 cmd_id = 0x0007;
+	u32 cmd_resp;
+	int ret;
+
+	ret = processor_thermal_send_mbox_cmd(to_pci_dev(dev), cmd_id, 0, &cmd_resp);
+	if (ret)
+		return ret;
+
+	return sprintf(buf, "%u\n", cmd_resp);
+}
+
+static ssize_t ddr_data_rate_show(struct device *dev,
+				  struct device_attribute *attr,
+				  char *buf)
+{
+	u16 cmd_id = 0x0107;
+	u32 cmd_resp;
+	int ret;
+
+	ret = processor_thermal_send_mbox_cmd(to_pci_dev(dev), cmd_id, 0, &cmd_resp);
+	if (ret)
+		return ret;
+
+	return sprintf(buf, "%u\n", cmd_resp);
+}
+
+static DEVICE_ATTR_RW(rfi_restriction);
+static DEVICE_ATTR_RO(ddr_data_rate);
+
 static struct attribute *dvfs_attrs[] = {
 	&dev_attr_rfi_restriction_run_busy.attr,
 	&dev_attr_rfi_restriction_err_code.attr,
@@ -199,6 +252,8 @@ static struct attribute *dvfs_attrs[] = {
 	&dev_attr_ddr_data_rate_point_2.attr,
 	&dev_attr_ddr_data_rate_point_3.attr,
 	&dev_attr_rfi_disable.attr,
+	&dev_attr_ddr_data_rate.attr,
+	&dev_attr_rfi_restriction.attr,
 	NULL
 };
 
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] thermal: int340x: processor_thermal: Add additional
  2021-05-17  6:14 [PATCH 0/2] thermal: int340x: processor_thermal: Add additional Srinivas Pandruvada
  2021-05-17  6:14 ` [PATCH 1/2] thermal: int340x: processor_thermal: Export mailbox interface Srinivas Pandruvada
  2021-05-17  6:14 ` [PATCH 2/2] thermal: int340x: processor_thermal: Export additional attributes Srinivas Pandruvada
@ 2021-07-06  8:26 ` You-Sheng Yang
  2 siblings, 0 replies; 4+ messages in thread
From: You-Sheng Yang @ 2021-07-06  8:26 UTC (permalink / raw)
  To: Srinivas Pandruvada
  Cc: linux-pm, linux-kernel, daniel.lezcano, amitk, rui.zhang

Works for me for bringing up PCI MMIO based thermal device.

Tested-by: You-Sheng Yang <vicamo.yang@canonical.com>

On 5/17/21 2:14 PM, Srinivas Pandruvada wrote:
> Add additional attributes to RFIM, which use mailbox commands. 
> 
> Srinivas Pandruvada (2):
>   thermal: int340x: processor_thermal: Export mailbox interface
>   thermal: int340x: processor_thermal: Export additional attributes
> 
>  .../processor_thermal_device.h                |  2 +
>  .../int340x_thermal/processor_thermal_mbox.c  | 12 +++-
>  .../int340x_thermal/processor_thermal_rfim.c  | 55 +++++++++++++++++++
>  3 files changed, 66 insertions(+), 3 deletions(-)
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-06  8:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-17  6:14 [PATCH 0/2] thermal: int340x: processor_thermal: Add additional Srinivas Pandruvada
2021-05-17  6:14 ` [PATCH 1/2] thermal: int340x: processor_thermal: Export mailbox interface Srinivas Pandruvada
2021-05-17  6:14 ` [PATCH 2/2] thermal: int340x: processor_thermal: Export additional attributes Srinivas Pandruvada
2021-07-06  8:26 ` [PATCH 0/2] thermal: int340x: processor_thermal: Add additional You-Sheng Yang

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).