X86 platform drivers
 help / color / mirror / Atom feed
From: Nikita Kravets <teackot@gmail.com>
To: platform-driver-x86@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>,
	Nikita Kravets <teackot@gmail.com>,
	Aakash Singh <mail@singhaakash.dev>,
	Jose Angel Pastrana <japp0005@red.ujaen.es>
Subject: [PATCH 3/5] platform/x86: msi-ec: Filter out unsupported attributes
Date: Tue, 10 Oct 2023 20:20:40 +0300	[thread overview]
Message-ID: <20231010172037.611063-9-teackot@gmail.com> (raw)
In-Reply-To: <20231010172037.611063-3-teackot@gmail.com>

Filter the attributes and only create those which are supported by the
currently loaded configuration. The filtered attributes are saved in an
attribute group to be easily created and removed.
root_attrs_support is an array of all attributes and their support
conditions. fw_version and fw_release_date are supported on all models
so their condition is always true.

Cc: Aakash Singh <mail@singhaakash.dev>
Cc: Jose Angel Pastrana <japp0005@red.ujaen.es>
Signed-off-by: Nikita Kravets <teackot@gmail.com>
---
 drivers/platform/x86/msi-ec.c | 40 +++++++++++++++++++++++++++--------
 drivers/platform/x86/msi-ec.h |  5 +++++
 2 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/drivers/platform/x86/msi-ec.c b/drivers/platform/x86/msi-ec.c
index 772b230fb47e..09472b21e093 100644
--- a/drivers/platform/x86/msi-ec.c
+++ b/drivers/platform/x86/msi-ec.c
@@ -872,22 +872,44 @@ static ssize_t fw_release_date_show(struct device *device,
 static DEVICE_ATTR_RO(fw_version);
 static DEVICE_ATTR_RO(fw_release_date);
 
-static struct attribute *msi_root_attrs[] = {
-	&dev_attr_fw_version.attr,
-	&dev_attr_fw_release_date.attr,
-	NULL
-};
-
-static struct attribute_group msi_root_group = {
-	.attrs = msi_root_attrs,
-};
+static struct attribute_group msi_root_group;
 
 /*
  * Sysfs platform driver
  */
 
+/*
+ * Copies supported attributes from `attributes` to `filtered`
+ */
+static void filter_attributes(struct attribute_support *attributes,
+			      struct attribute **filtered,
+			      size_t size)
+{
+	for (int i = 0, j = 0; i < size; i++) {
+		if (attributes[i].supported)
+			filtered[j++] = attributes[i].attribute;
+	}
+}
+
 static int msi_platform_probe(struct platform_device *pdev)
 {
+	struct attribute_support root_attrs_support[] = {
+		{
+			&dev_attr_fw_version.attr,
+			true,
+		},
+		{
+			&dev_attr_fw_release_date.attr,
+			true,
+		},
+	};
+
+	/* +1 to null-terminate the array */
+	static struct attribute *root_attrs[ARRAY_SIZE(root_attrs_support) + 1] = {0};
+
+	filter_attributes(root_attrs_support, root_attrs, ARRAY_SIZE(root_attrs_support));
+	msi_root_group.attrs = root_attrs;
+
 	return sysfs_create_group(&pdev->dev.kobj, &msi_root_group);
 }
 
diff --git a/drivers/platform/x86/msi-ec.h b/drivers/platform/x86/msi-ec.h
index be3533dc9cc6..f4198f0df5d9 100644
--- a/drivers/platform/x86/msi-ec.h
+++ b/drivers/platform/x86/msi-ec.h
@@ -119,4 +119,9 @@ struct msi_ec_conf {
 	struct msi_ec_kbd_bl_conf         kbd_bl;
 };
 
+struct attribute_support {
+	struct attribute *attribute;
+	bool supported;
+};
+
 #endif // _MSI_EC_H_
-- 
2.42.0


  parent reply	other threads:[~2023-10-10 17:22 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-10 17:20 [PATCH 0/5] platform/x86: msi-ec: Add the first platform device attributes Nikita Kravets
2023-10-10 17:20 ` [PATCH 1/5] platform/x86: msi-ec: Register a platform driver Nikita Kravets
2023-10-11 13:00   ` Ilpo Järvinen
2023-10-12 12:30     ` Hans de Goede
2023-10-10 17:20 ` [PATCH 2/5] platform/x86: msi-ec: Add fw version and release date attributes Nikita Kravets
2023-10-11 12:41   ` Ilpo Järvinen
2023-10-12 12:34     ` Hans de Goede
2023-10-12 12:56       ` Ilpo Järvinen
2023-10-18 14:34         ` Hans de Goede
2025-02-20 12:25           ` N K
2023-10-10 17:20 ` Nikita Kravets [this message]
2023-10-11 12:46   ` [PATCH 3/5] platform/x86: msi-ec: Filter out unsupported attributes Ilpo Järvinen
2023-10-10 17:20 ` [PATCH 4/5] platform/x86: msi-ec: Add EC bit operation functions Nikita Kravets
2023-10-11 12:59   ` Ilpo Järvinen
2023-10-12 12:41     ` Hans de Goede
2023-10-10 17:20 ` [PATCH 5/5] platform/x86: msi-ec: Add a cooler boost attribute Nikita Kravets
2023-10-11 12:49   ` Ilpo Järvinen

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=20231010172037.611063-9-teackot@gmail.com \
    --to=teackot@gmail.com \
    --cc=hdegoede@redhat.com \
    --cc=japp0005@red.ujaen.es \
    --cc=mail@singhaakash.dev \
    --cc=platform-driver-x86@vger.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