Commit ca229f1b authored by Linus Walleij's avatar Linus Walleij Committed by Samuel Ortiz

mfd: Fix debugfs code in AB3100 OTP driver

This fixes the aged and unreachable debugfs code in the AB3100
OTP driver so that it's (A) reachable and (B) works. Bug detected
in parallell by Christoph Egger using VAMOS and Robert P. J. Day
by his kernel scanning script.
Signed-off-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
Cc: Christoph Egger <siccegge@stud.informatik.uni-erlangen.de>
Cc: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 2071db48
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/mfd/ab3100.h> #include <linux/mfd/ab3100.h>
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/seq_file.h>
/* The OTP registers */ /* The OTP registers */
#define AB3100_OTP0 0xb0 #define AB3100_OTP0 0xb0
...@@ -95,11 +96,10 @@ static int __init ab3100_otp_read(struct ab3100_otp *otp) ...@@ -95,11 +96,10 @@ static int __init ab3100_otp_read(struct ab3100_otp *otp)
* This is a simple debugfs human-readable file that dumps out * This is a simple debugfs human-readable file that dumps out
* the contents of the OTP. * the contents of the OTP.
*/ */
#ifdef CONFIG_DEBUGFS #ifdef CONFIG_DEBUG_FS
static int show_otp(struct seq_file *s, void *v) static int ab3100_show_otp(struct seq_file *s, void *v)
{ {
struct ab3100_otp *otp = s->private; struct ab3100_otp *otp = s->private;
int err;
seq_printf(s, "OTP is %s\n", otp->locked ? "LOCKED" : "UNLOCKED"); seq_printf(s, "OTP is %s\n", otp->locked ? "LOCKED" : "UNLOCKED");
seq_printf(s, "OTP clock switch startup is %uHz\n", otp->freq); seq_printf(s, "OTP clock switch startup is %uHz\n", otp->freq);
...@@ -113,7 +113,7 @@ static int show_otp(struct seq_file *s, void *v) ...@@ -113,7 +113,7 @@ static int show_otp(struct seq_file *s, void *v)
static int ab3100_otp_open(struct inode *inode, struct file *file) static int ab3100_otp_open(struct inode *inode, struct file *file)
{ {
return single_open(file, ab3100_otp_show, inode->i_private); return single_open(file, ab3100_show_otp, inode->i_private);
} }
static const struct file_operations ab3100_otp_operations = { static const struct file_operations ab3100_otp_operations = {
...@@ -131,13 +131,14 @@ static int __init ab3100_otp_init_debugfs(struct device *dev, ...@@ -131,13 +131,14 @@ static int __init ab3100_otp_init_debugfs(struct device *dev,
&ab3100_otp_operations); &ab3100_otp_operations);
if (!otp->debugfs) { if (!otp->debugfs) {
dev_err(dev, "AB3100 debugfs OTP file registration failed!\n"); dev_err(dev, "AB3100 debugfs OTP file registration failed!\n");
return err; return -ENOENT;
} }
return 0;
} }
static void __exit ab3100_otp_exit_debugfs(struct ab3100_otp *otp) static void __exit ab3100_otp_exit_debugfs(struct ab3100_otp *otp)
{ {
debugfs_remove_file(otp->debugfs); debugfs_remove(otp->debugfs);
} }
#else #else
/* Compile this out if debugfs not selected */ /* Compile this out if debugfs not selected */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment