All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Expose firmware paths via procfs
@ 2012-10-10 10:56 Dimitris Papastamos
  2012-10-10 10:56 ` [PATCH 1/2] firmware: Convert firmware path setup from an array to a list Dimitris Papastamos
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Dimitris Papastamos @ 2012-10-10 10:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ming Lei, Greg Kroah-Hartman

Hi all, sorry missed the relevant CCs before.  This patch set
adds support for exposing the firmware paths via procfs.  I've added
an entry named /proc/fw_path which is a whitespace separated list
of firmware paths.

Once I have some time I hope to also send out a patch that allows
the user to dynamically configure these paths.

Dimitris Papastamos (2):
  firmware: Convert firmware path setup from an array to a list
  firmware: Add /proc/fw_path entry to list the firmware paths

 drivers/base/firmware_class.c | 127 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 119 insertions(+), 8 deletions(-)

-- 
1.7.12.2


^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH 2/2] firmware: Add /proc/fw_path entry to list the firmware paths
@ 2012-10-09 22:50 Dimitris Papastamos
  0 siblings, 0 replies; 11+ messages in thread
From: Dimitris Papastamos @ 2012-10-09 22:50 UTC (permalink / raw)
  To: linux-kernel

This patch provides the aforementioned procfs file that lists
the default firmware paths that are used during firmware lookup.

The file contains a white space separated list of paths.

There will be another patch on top of this that adds the functionality
to modify the paths at runtime.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
---
 drivers/base/firmware_class.c | 55 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 2153eab..22cef4d 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -27,6 +27,8 @@
 #include <linux/pm.h>
 #include <linux/suspend.h>
 #include <linux/syscore_ops.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 
 #include <generated/utsrelease.h>
 
@@ -1430,6 +1432,56 @@ err_fwp_alloc:
 	return -ENOMEM;
 }
 
+static void *fw_path_seq_start(struct seq_file *seq, loff_t *pos)
+{
+	return seq_list_start_head(&fw_path_list, *pos);
+}
+
+static void *fw_path_seq_next(struct seq_file *seq, void *v, loff_t *pos)
+{
+	return seq_list_next(v, &fw_path_list, pos);
+}
+
+static int fw_path_seq_show(struct seq_file *seq, void *v)
+{
+	const struct fw_path_rec *fwp;
+	struct list_head *l = v;
+
+	if (l == &fw_path_list)
+		return 0;
+	fwp = list_entry(v, struct fw_path_rec, list);
+	seq_puts(seq, fwp->name);
+	if (l->next != &fw_path_list)
+		seq_putc(seq, ' ');
+	else
+		seq_putc(seq, '\n');
+	return 0;
+}
+
+static void fw_path_seq_stop(struct seq_file *seq, void *v)
+{
+}
+
+static const struct seq_operations fw_path_ops = {
+	.start = fw_path_seq_start,
+	.next = fw_path_seq_next,
+	.stop = fw_path_seq_stop,
+	.show = fw_path_seq_show,
+};
+
+static int fw_path_open(struct inode *inode, struct file *file)
+{
+	return seq_open(file, &fw_path_ops);
+}
+
+static const struct file_operations fw_path_seq_fops = {
+	.owner = THIS_MODULE,
+	.open = fw_path_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = seq_release,
+};
+
 static void __init fw_cache_init(void)
 {
 	spin_lock_init(&fw_cache.lock);
@@ -1465,6 +1517,8 @@ static int __init firmware_class_init(void)
 		return ret;
 	}
 
+	proc_create("fw_path", S_IRUGO, NULL, &fw_path_seq_fops);
+
 	return class_register(&firmware_class);
 }
 
@@ -1474,6 +1528,7 @@ static void __exit firmware_class_exit(void)
 	unregister_syscore_ops(&fw_syscore_ops);
 	unregister_pm_notifier(&fw_cache.pm_notify);
 #endif
+	remove_proc_entry("fw_path", NULL);
 	fw_free_path_list();
 	class_unregister(&firmware_class);
 }
-- 
1.7.12.2


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

end of thread, other threads:[~2012-10-23  9:43 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-10 10:56 [PATCH 0/2] Expose firmware paths via procfs Dimitris Papastamos
2012-10-10 10:56 ` [PATCH 1/2] firmware: Convert firmware path setup from an array to a list Dimitris Papastamos
2012-10-22 15:42   ` Greg Kroah-Hartman
2012-10-23  9:43     ` Dimitris Papastamos
2012-10-10 10:56 ` [PATCH 2/2] firmware: Add /proc/fw_path entry to list the firmware paths Dimitris Papastamos
2012-10-10 13:36   ` Greg Kroah-Hartman
2012-10-10 13:40     ` Josh Boyer
2012-10-10 13:45     ` Dimitris Papastamos
2012-10-10 14:41     ` Dimitris Papastamos
2012-10-10 15:14 ` [PATCH 0/2] Expose firmware paths via procfs Ming Lei
  -- strict thread matches above, loose matches on Subject: below --
2012-10-09 22:50 [PATCH 2/2] firmware: Add /proc/fw_path entry to list the firmware paths Dimitris Papastamos

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.