Merge tag 'platform-drivers-x86-v4.16-2' of git://git.infradead.org/linux-platform...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Feb 2018 20:47:23 +0000 (12:47 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Feb 2018 20:47:23 +0000 (12:47 -0800)
Pull more x86 platform-drivers updates from Andy Shevchenko:
 "The DEFINE_SHOW_ATTRIBUTE() macro was defined privately in three
  locations and is useful for new and old users to avoid a lot of code
  duplication.

  Move the macro to seq_file.h.

  Along with above, clean up three drivers to use that macro.

  This, due to dependencies, was sent separately since affected changes
  weren't upstream originally yet. The rationale of doing this now is to
  allow use of new macro in v4.17 cycle in a conflictless manner"

* tag 'platform-drivers-x86-v4.16-2' of git://git.infradead.org/linux-platform-drivers-x86:
  platform/x86: samsung-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
  platform/x86: ideapad-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
  platform/x86: dell-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
  seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro

drivers/mfd/ab8500-debugfs.c
drivers/platform/x86/dell-laptop.c
drivers/platform/x86/ideapad-laptop.c
drivers/platform/x86/pmc_atom.c
drivers/platform/x86/samsung-laptop.c
include/linux/seq_file.h
net/bluetooth/hci_debugfs.c

index 1afa27de7191c7b75fb37ab64fea72bae97cce2a..fcb3a92ae85f8b2d2b819eeece89dcb96528d825 100644 (file)
@@ -1258,20 +1258,6 @@ static struct ab8500_prcmu_ranges ab8540_debug_ranges[AB8500_NUM_BANKS] = {
        },
 };
 
-#define DEFINE_SHOW_ATTRIBUTE(__name)                                        \
-static int __name ## _open(struct inode *inode, struct file *file)           \
-{                                                                            \
-       return single_open(file, __name ## _show, inode->i_private);          \
-}                                                                            \
-                                                                             \
-static const struct file_operations __name ## _fops = {                              \
-       .owner          = THIS_MODULE,                                        \
-       .open           = __name ## _open,                                    \
-       .read           = seq_read,                                           \
-       .llseek         = seq_lseek,                                          \
-       .release        = single_release,                                     \
-}                                                                            \
-
 static irqreturn_t ab8500_debug_handler(int irq, void *data)
 {
        char buf[16];
index a7b141992cb3f8f92e2d215bd2f610901d62df22..2a68f59d2228c921e8609ccba97832e07cbaa582 100644 (file)
@@ -636,19 +636,7 @@ static int dell_debugfs_show(struct seq_file *s, void *data)
 
        return 0;
 }
-
-static int dell_debugfs_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, dell_debugfs_show, inode->i_private);
-}
-
-static const struct file_operations dell_debugfs_fops = {
-       .owner = THIS_MODULE,
-       .open = dell_debugfs_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(dell_debugfs);
 
 static void dell_update_rfkill(struct work_struct *ignored)
 {
index b2bbddd09a52c5506104ae16a13a0b848354b46a..5b6f18b188012dcc94b19c9156ee54b42650473b 100644 (file)
@@ -284,19 +284,7 @@ static int debugfs_status_show(struct seq_file *s, void *data)
 
        return 0;
 }
-
-static int debugfs_status_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, debugfs_status_show, inode->i_private);
-}
-
-static const struct file_operations debugfs_status_fops = {
-       .owner = THIS_MODULE,
-       .open = debugfs_status_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(debugfs_status);
 
 static int debugfs_cfg_show(struct seq_file *s, void *data)
 {
@@ -337,19 +325,7 @@ static int debugfs_cfg_show(struct seq_file *s, void *data)
        }
        return 0;
 }
-
-static int debugfs_cfg_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, debugfs_cfg_show, inode->i_private);
-}
-
-static const struct file_operations debugfs_cfg_fops = {
-       .owner = THIS_MODULE,
-       .open = debugfs_cfg_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(debugfs_cfg);
 
 static int ideapad_debugfs_init(struct ideapad_private *priv)
 {
index 4b3c37b6288cf0e4bbf4107b87d4fdf63cd131c5..8f018b3f3cd4c42ef40764d39587e7e2e11285d1 100644 (file)
@@ -208,20 +208,6 @@ static const struct pmc_data cht_data = {
        .clks = cht_clks,
 };
 
-#define DEFINE_SHOW_ATTRIBUTE(__name)                                  \
-static int __name ## _open(struct inode *inode, struct file *file)     \
-{                                                                      \
-       return single_open(file, __name ## _show, inode->i_private);    \
-}                                                                      \
-                                                                       \
-static const struct file_operations __name ## _fops = {                        \
-       .owner          = THIS_MODULE,                                  \
-       .open           = __name ## _open,                              \
-       .read           = seq_read,                                     \
-       .llseek         = seq_lseek,                                    \
-       .release        = single_release,                               \
-}
-
 static inline u32 pmc_reg_read(struct pmc_dev *pmc, int reg_offset)
 {
        return readl(pmc->regmap + reg_offset);
index d3cb26f6df736026631e86e91ac5b7dd3b77c49b..03305e0b89ff808b5665d474b86baba62539c05e 100644 (file)
@@ -1252,7 +1252,7 @@ static int __init samsung_sysfs_init(struct samsung_laptop *samsung)
 
 }
 
-static int show_call(struct seq_file *m, void *data)
+static int samsung_laptop_call_show(struct seq_file *m, void *data)
 {
        struct samsung_laptop *samsung = m->private;
        struct sabi_data *sdata = &samsung->debug.data;
@@ -1274,19 +1274,7 @@ static int show_call(struct seq_file *m, void *data)
                   sdata->d0, sdata->d1, sdata->d2, sdata->d3);
        return 0;
 }
-
-static int samsung_debugfs_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, show_call, inode->i_private);
-}
-
-static const struct file_operations samsung_laptop_call_io_ops = {
-       .owner = THIS_MODULE,
-       .open = samsung_debugfs_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-};
+DEFINE_SHOW_ATTRIBUTE(samsung_laptop_call);
 
 static void samsung_debugfs_exit(struct samsung_laptop *samsung)
 {
@@ -1351,7 +1339,7 @@ static int samsung_debugfs_init(struct samsung_laptop *samsung)
 
        dent = debugfs_create_file("call", S_IFREG | S_IRUGO,
                                   samsung->debug.root, samsung,
-                                  &samsung_laptop_call_io_ops);
+                                  &samsung_laptop_call_fops);
        if (!dent)
                goto error_debugfs;
 
index 09c6e28746f9193da3052b81fbd7867dc34f5a8e..ab437dd2e3b9a5dc222824cb82eeda86124f614e 100644 (file)
@@ -140,6 +140,20 @@ void *__seq_open_private(struct file *, const struct seq_operations *, int);
 int seq_open_private(struct file *, const struct seq_operations *, int);
 int seq_release_private(struct inode *, struct file *);
 
+#define DEFINE_SHOW_ATTRIBUTE(__name)                                  \
+static int __name ## _open(struct inode *inode, struct file *file)     \
+{                                                                      \
+       return single_open(file, __name ## _show, inode->i_private);    \
+}                                                                      \
+                                                                       \
+static const struct file_operations __name ## _fops = {                        \
+       .owner          = THIS_MODULE,                                  \
+       .open           = __name ## _open,                              \
+       .read           = seq_read,                                     \
+       .llseek         = seq_lseek,                                    \
+       .release        = single_release,                               \
+}
+
 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
 {
 #ifdef CONFIG_USER_NS
index 57403bd567d0680f7e890b6e3ddcf7f83f9511fe..418b76e557b0a58bf7903c830866a58b4b28147d 100644 (file)
@@ -90,19 +90,6 @@ static int __name ## _show(struct seq_file *f, void *ptr)                  \
                                                                              \
 DEFINE_SHOW_ATTRIBUTE(__name)
 
-#define DEFINE_SHOW_ATTRIBUTE(__name)                                        \
-static int __name ## _open(struct inode *inode, struct file *file)           \
-{                                                                            \
-       return single_open(file, __name ## _show, inode->i_private);          \
-}                                                                            \
-                                                                             \
-static const struct file_operations __name ## _fops = {                              \
-       .open           = __name ## _open,                                    \
-       .read           = seq_read,                                           \
-       .llseek         = seq_lseek,                                          \
-       .release        = single_release,                                     \
-}                                                                            \
-
 static int features_show(struct seq_file *f, void *ptr)
 {
        struct hci_dev *hdev = f->private;