From: Huang Rui <ray.huang@amd.com>
To: "Borislav Petkov" <bp@suse.de>, "Jean Delvare" <jdelvare@suse.de>,
"Guenter Roeck" <linux@roeck-us.net>,
"Andy Lutomirski" <luto@amacapital.net>,
"Andreas Herrmann" <herrmann.der.user@gmail.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Peter Zijlstra" <peterz@infradead.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
"Len Brown" <lenb@kernel.org>,
"John Stultz" <john.stultz@linaro.org>,
"Frédéric Weisbecker" <fweisbec@gmail.com>
Cc: <lm-sensors@lm-sensors.org>, <linux-kernel@vger.kernel.org>,
<x86@kernel.org>,
Andreas Herrmann <herrmann.der.user@googlemail.com>,
Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>,
Borislav Petkov <bp@alien8.de>,
Fengguang Wu <fengguang.wu@intel.com>,
Aaron Lu <aaron.lu@intel.com>, Tony Li <tony.li@amd.com>,
Huang Rui <ray.huang@amd.com>
Subject: [PATCH 03/15] hwmon, fam15h_power: refactor attributes for dynamically added
Date: Thu, 27 Aug 2015 16:07:34 +0800 [thread overview]
Message-ID: <1440662866-28716-4-git-send-email-ray.huang@amd.com> (raw)
In-Reply-To: <1440662866-28716-1-git-send-email-ray.huang@amd.com>
Attributes depend on the CPU model the driver gets loaded on.
Therefore, add those attributes dynamically at init time. This is more
flexible to control the different attributes on different platforms.
Signed-off-by: Huang Rui <ray.huang@amd.com>
---
drivers/hwmon/fam15h_power.c | 49 +++++++++++++++++++++++++++-----------------
1 file changed, 30 insertions(+), 19 deletions(-)
diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
index 820adf1..65ffb06 100644
--- a/drivers/hwmon/fam15h_power.c
+++ b/drivers/hwmon/fam15h_power.c
@@ -41,6 +41,8 @@ MODULE_LICENSE("GPL");
#define REG_TDP_RUNNING_AVERAGE 0xe0
#define REG_TDP_LIMIT3 0xe8
+#define FAM15H_MIN_POWER_GROUPS 2
+
struct fam15h_power_data {
struct pci_dev *pdev;
unsigned int tdp_to_watts;
@@ -93,29 +95,35 @@ static ssize_t show_power_crit(struct device *dev,
}
static DEVICE_ATTR(power1_crit, S_IRUGO, show_power_crit, NULL);
-static umode_t fam15h_power_is_visible(struct kobject *kobj,
- struct attribute *attr,
- int index)
+static struct attribute_group fam15h_power_group;
+__ATTRIBUTE_GROUPS(fam15h_power);
+
+static int fam15h_power_init_attrs(struct pci_dev *pdev)
{
- /* power1_input is only reported for Fam15h, Models 00h-0fh */
- if (attr == &dev_attr_power1_input.attr &&
- (boot_cpu_data.x86 != 0x15 || boot_cpu_data.x86_model > 0xf))
- return 0;
+ int n = FAM15H_MIN_POWER_GROUPS;
+ struct attribute **fam15h_power_attrs;
- return attr->mode;
-}
+ if (boot_cpu_data.x86 == 0x15 && boot_cpu_data.x86_model <= 0xf)
+ n += 1;
-static struct attribute *fam15h_power_attrs[] = {
- &dev_attr_power1_input.attr,
- &dev_attr_power1_crit.attr,
- NULL
-};
+ fam15h_power_attrs = devm_kcalloc(&pdev->dev, n,
+ sizeof(*fam15h_power_attrs),
+ GFP_KERNEL);
-static const struct attribute_group fam15h_power_group = {
- .attrs = fam15h_power_attrs,
- .is_visible = fam15h_power_is_visible,
-};
-__ATTRIBUTE_GROUPS(fam15h_power);
+ if (!fam15h_power_attrs) {
+ dev_err(&pdev->dev, "failed to alloc fam15h_power_attrs\n");
+ return -ENOMEM;
+ }
+
+ n = 0;
+ fam15h_power_attrs[n++] = &dev_attr_power1_crit.attr;
+ if (boot_cpu_data.x86 == 0x15 && boot_cpu_data.x86_model <= 0xf)
+ fam15h_power_attrs[n++] = &dev_attr_power1_input.attr;
+
+ fam15h_power_group.attrs = fam15h_power_attrs;
+
+ return 0;
+}
static bool should_load_on_this_node(struct pci_dev *f4)
{
@@ -221,6 +229,9 @@ static int fam15h_power_probe(struct pci_dev *pdev,
if (!data)
return -ENOMEM;
+ if (fam15h_power_init_attrs(pdev))
+ return -ENOMEM;
+
fam15h_power_init_data(pdev, data);
data->pdev = pdev;
--
1.9.1
next prev parent reply other threads:[~2015-08-27 8:24 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-27 8:07 [PATCH 00/15] hwmon, fam15h_power: introduce an accumulated power reporting algorithm Huang Rui
2015-08-27 8:07 ` [PATCH 01/15] hwmon, fam15h_power: add support for AMD Carrizo Huang Rui
2015-08-27 14:35 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 02/15] hwmon, fam15h_power: rename fam15h_power_is_internal_node0 function Huang Rui
2015-08-27 14:35 ` Guenter Roeck
2015-08-27 8:07 ` Huang Rui [this message]
2015-08-27 14:46 ` [PATCH 03/15] hwmon, fam15h_power: refactor attributes for dynamically added Guenter Roeck
2015-08-28 10:05 ` Huang Rui
2015-08-27 8:07 ` [PATCH 04/15] hwmon, fam15h_power: update running_avg_capture bit field to 28 Huang Rui
2015-08-27 14:48 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 05/15] hwmon, fam15h_power: enable power1_input on AMD Carrizo Huang Rui
2015-08-27 14:50 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 06/15] hwmon, fam15h_power: add documentation for new processors support Huang Rui
2015-08-27 14:51 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 07/15] hwmon, fam15h_power: add ratio of Tsample to the PTSC period Huang Rui
2015-08-27 14:54 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 08/15] hwmon, fam15h_power: add max compute unit accumulated power Huang Rui
2015-08-27 14:56 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 09/15] x86, amd: add accessor for number of cores per compute unit Huang Rui
2015-08-27 17:27 ` Guenter Roeck
2015-08-28 10:28 ` Huang Rui
2015-08-28 6:48 ` Borislav Petkov
2015-08-28 8:00 ` Guenter Roeck
2015-08-28 8:04 ` Ingo Molnar
2015-08-28 8:56 ` Borislav Petkov
2015-08-28 10:18 ` Huang Rui
2015-08-29 9:19 ` Ingo Molnar
2015-08-30 15:53 ` Borislav Petkov
2015-08-31 8:38 ` Peter Zijlstra
2015-08-31 13:26 ` Guenter Roeck
2015-08-31 13:38 ` Peter Zijlstra
2015-08-31 13:53 ` Guenter Roeck
2015-08-31 14:57 ` Peter Zijlstra
2015-08-31 15:11 ` Guenter Roeck
2015-08-31 16:06 ` Borislav Petkov
2015-08-31 16:19 ` Guenter Roeck
2015-08-31 20:44 ` Peter Zijlstra
2015-08-31 21:24 ` Guenter Roeck
2015-09-01 15:56 ` Borislav Petkov
2015-09-01 16:06 ` Guenter Roeck
2015-08-27 8:07 ` [PATCH 10/15] hwmon, fam15h_power: add compute unit accumulated power Huang Rui
2015-08-28 8:03 ` Ingo Molnar
2015-08-28 10:42 ` Huang Rui
2015-08-27 8:07 ` [PATCH 11/15] hwmon, fam15h_power: add ptsc counter value for " Huang Rui
2015-08-27 8:07 ` [PATCH 12/15] hwmon, fam15h_power: introduce a cpu accumulated power reporting algorithm Huang Rui
2015-08-27 17:30 ` Guenter Roeck
2015-08-28 10:45 ` Huang Rui
2015-08-28 14:05 ` Guenter Roeck
2015-08-31 4:16 ` Huang Rui
2015-08-31 4:30 ` Guenter Roeck
2015-08-31 13:11 ` Huang Rui
2015-08-31 13:25 ` Peter Zijlstra
2015-08-31 14:59 ` Peter Zijlstra
2015-08-27 8:07 ` [PATCH 13/15] hwmon, fam15h_power: add documentation for previous TDP reporting Huang Rui
2015-08-27 8:07 ` [PATCH 14/15] hwmon, fam15h_power: add documentation for accumulated power algorithm Huang Rui
2015-08-27 8:07 ` [PATCH 15/15] MAINTAINERS: change the maintainer of fam15h_power driver Huang Rui
2015-08-29 16:33 ` [15/15] " Guenter Roeck
2015-08-31 1:11 ` Huang Rui
2015-08-31 15:19 ` Andreas Herrmann
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=1440662866-28716-4-git-send-email-ray.huang@amd.com \
--to=ray.huang@amd.com \
--cc=Aravind.Gopalakrishnan@amd.com \
--cc=aaron.lu@intel.com \
--cc=bp@alien8.de \
--cc=bp@suse.de \
--cc=fengguang.wu@intel.com \
--cc=fweisbec@gmail.com \
--cc=herrmann.der.user@gmail.com \
--cc=herrmann.der.user@googlemail.com \
--cc=jdelvare@suse.de \
--cc=john.stultz@linaro.org \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=tony.li@amd.com \
--cc=x86@kernel.org \
/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
all inboxes | Powered by JetHome®