[PATCH v5 3/4] platform/x86/amd/pmc: move some variables to struct amd_pmc_dev

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Move fsize, stb_rdptr_offset, num_samples to struct amd_pmc_dev so
that these variables are accessible across functions.

Signed-off-by: Sanket Goswami <Sanket.Goswami@xxxxxxx>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@xxxxxxx>
---
v5:
- new patch based on comments in v4 from Hans.
- based on review-ilpo branch

 drivers/platform/x86/amd/pmc/pmc.c | 24 +++++++++++++-----------
 drivers/platform/x86/amd/pmc/pmc.h |  3 +++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c
index 67daa655cc6a..071d92b7fbde 100644
--- a/drivers/platform/x86/amd/pmc/pmc.c
+++ b/drivers/platform/x86/amd/pmc/pmc.c
@@ -244,8 +244,8 @@ static const struct file_operations amd_pmc_stb_debugfs_fops = {
 static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp)
 {
 	struct amd_pmc_dev *dev = filp->f_inode->i_private;
-	u32 fsize, num_samples, val, stb_rdptr_offset = 0;
 	struct amd_pmc_stb_v2_data *flex_arr;
+	u32 val;
 	int ret;
 
 	/* Write dummy postcode while reading the STB buffer */
@@ -261,7 +261,7 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp)
 		dev_warn_once(dev->dev, "S2D force flush not supported\n");
 
 	/* Get the num_samples to calculate the last push location */
-	ret = amd_pmc_send_cmd(dev, S2D_NUM_SAMPLES, &num_samples, dev->s2d_msg_id, true);
+	ret = amd_pmc_send_cmd(dev, S2D_NUM_SAMPLES, &dev->num_samples, dev->s2d_msg_id, true);
 	/* Clear msg_port for other SMU operation */
 	dev->msg_port = 0;
 	if (ret) {
@@ -270,29 +270,31 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp)
 	}
 
 	/* Start capturing data from the last push location */
-	if (num_samples > S2D_TELEMETRY_BYTES_MAX) {
+	if (dev->num_samples > S2D_TELEMETRY_BYTES_MAX) {
 		/* First read oldest data starting 1 behind last write till end of ringbuffer */
-		stb_rdptr_offset = num_samples % S2D_TELEMETRY_BYTES_MAX;
-		fsize = S2D_TELEMETRY_BYTES_MAX - stb_rdptr_offset;
+		dev->stb_rdptr_offset = dev->num_samples % S2D_TELEMETRY_BYTES_MAX;
+		dev->fsize = S2D_TELEMETRY_BYTES_MAX - dev->stb_rdptr_offset;
 
 		flex_arr = kzalloc(struct_size(flex_arr, data, S2D_TELEMETRY_BYTES_MAX),
 				   GFP_KERNEL);
 		if (!flex_arr)
 			return -ENOMEM;
 
-		memcpy_fromio(flex_arr->data, dev->stb_virt_addr + stb_rdptr_offset, fsize);
+		memcpy_fromio(flex_arr->data, dev->stb_virt_addr + dev->stb_rdptr_offset,
+			      dev->fsize);
 		/* Second copy the newer samples from offset 0 - last write */
-		memcpy_fromio(flex_arr->data + fsize, dev->stb_virt_addr, stb_rdptr_offset);
+		memcpy_fromio(flex_arr->data + dev->fsize, dev->stb_virt_addr,
+			      dev->stb_rdptr_offset);
 	} else {
-		fsize = num_samples;
-		flex_arr = kzalloc(struct_size(flex_arr, data, num_samples), GFP_KERNEL);
+		dev->fsize = dev->num_samples;
+		flex_arr = kzalloc(struct_size(flex_arr, data, dev->num_samples), GFP_KERNEL);
 		if (!flex_arr)
 			return -ENOMEM;
 
-		memcpy_fromio(flex_arr->data, dev->stb_virt_addr, num_samples);
+		memcpy_fromio(flex_arr->data, dev->stb_virt_addr, dev->num_samples);
 	}
 
-	flex_arr->size = fsize;
+	flex_arr->size = dev->fsize;
 	filp->private_data = flex_arr->data;
 
 	return 0;
diff --git a/drivers/platform/x86/amd/pmc/pmc.h b/drivers/platform/x86/amd/pmc/pmc.h
index c27bd6a5642f..12728eedecda 100644
--- a/drivers/platform/x86/amd/pmc/pmc.h
+++ b/drivers/platform/x86/amd/pmc/pmc.h
@@ -26,6 +26,9 @@ struct amd_pmc_dev {
 	u32 dram_size;
 	u32 num_ips;
 	u32 s2d_msg_id;
+	u32 fsize;
+	u32 num_samples;
+	u32 stb_rdptr_offset;
 /* SMU version information */
 	u8 smu_program;
 	u8 major;
-- 
2.25.1




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux