platform-drivers-x86 for v4.16-2
DEFINE_SHOW_ATTRIBUTE() macro defined privately in 3 locations 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 3 drivers to use that macro. The following is an automated git shortlog grouped by driver: dell-laptop: - Re-use DEFINE_SHOW_ATTRIBUTE() macro ideapad-laptop: - Re-use DEFINE_SHOW_ATTRIBUTE() macro samsung-laptop: - Re-use DEFINE_SHOW_ATTRIBUTE() macro seq_file: - Introduce DEFINE_SHOW_ATTRIBUTE() helper macro -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEhiZOUlnC9oKN3n3AmT3/83c5Sy0FAlp7AFIACgkQmT3/83c5 Sy3LFQ//QZQcURDdVA0Kr98tHBdZuwA3VnfQ92WTmEOScflSoiaTidi5L/Pg+J/I g04T8UA/8I6UsvOzT/ULOkrSCj6CawAWeZCBiYaESrhM8sD29msxycPEf9wgPV2L iDzxtsGDYFiXm25Zd61Tdgv24NqLXDhv0C+MMF35N8RRzo4mxMy6CU7ZqNUZ2U8L eO7fdj0K6tXgOUNE90xziV/Rwwja3Rh9clb3l1AOK/l0uaWjaTfPeJJJGsG6aMAo upT+YauvzAxLm6ViWQn+kM29qvgXPPhSrxhlW0yOf5jHcSnpi5hCiqG0CypJJuBE Vo1bC7oHpep1Inn2eN8mz6qaidvHzqi/0nmzr4yu+QHQM+iC5vhlH2mw8oGoVw5O 1znT6UX3BV4oRpbmSmYWseUnj6tV8vkaQ/394B86VtdVkfTV9J0VxIQfyf10I6Tq wK0aqvOvMqBi0PJdP1yhTnZ3SKRDRkRbTXUIkrnVvLyKku/SA+uA/yTZZD5BW0hI RY7s1//jiXpoHzKD0sV2kXMjbaOdhBYJMCtH9e31MwMCxSN8bSbA+CyC4vtWM6uC UWfnOtTs2ujilmZEmsh9zfX4m4DM4Li6YxrkC2enCqkwT5FRnnqxgnYQsKUMwbiz petClTONFKPDED8gP1kRgpVj+tQLrj/FFiSSwncZ73njIoU6Ooc= =jXCu -----END PGP SIGNATURE----- Merge tag 'platform-drivers-x86-v4.16-2' of git://git.infradead.org/linux-platform-drivers-x86 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
This commit is contained in:
commit
cc006a2241
|
@ -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];
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue