Linux wireless drivers development
 help / color / mirror / Atom feed
From: Anisse Astier <anisse@astier.eu>
To: Ivo Van Doorn <ivdoorn@gmail.com>
Cc: linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	linville@tuxdriver.com,
	Gertjan van Wingerde <gwingerde@gmail.com>,
	Helmut Schaa <helmut.schaa@googlemail.com>
Subject: Re: [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty
Date: Fri, 20 Apr 2012 17:48:23 +0200	[thread overview]
Message-ID: <20120420174823.7a0e0921@destiny.ordissimo> (raw)
In-Reply-To: <CAOZOX0XppHercdP64G+pOTxrzz6H0UNsr0Bkw6TzkGW_MNZJiw@mail.gmail.com>

On Fri, 20 Apr 2012 09:03:00 +0200, Ivo Van Doorn <ivdoorn@gmail.com> wrote :

> Hi,
> 
> I'm almost completely happy with this patch. :)
> 
> > @@ -694,25 +693,29 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
> >        if (IS_ERR(intf->register_folder) || !intf->register_folder)
> >                goto exit;
> >
> > -#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name)    \
> > -({                                                             \
> > -       (__intf)->__name##_off_entry =                          \
> > -           debugfs_create_u32(__stringify(__name) "_offset",   \
> > -                              S_IRUSR | S_IWUSR,               \
> > -                              (__intf)->register_folder,       \
> > -                              &(__intf)->offset_##__name);     \
> > -       if (IS_ERR((__intf)->__name##_off_entry)                \
> > -                       || !(__intf)->__name##_off_entry)       \
> > -               goto exit;                                      \
> > -                                                               \
> > -       (__intf)->__name##_val_entry =                          \
> > -           debugfs_create_file(__stringify(__name) "_value",   \
> > -                               S_IRUSR | S_IWUSR,              \
> > -                               (__intf)->register_folder,      \
> > -                               (__intf), &rt2x00debug_fop_##__name);\
> > -       if (IS_ERR((__intf)->__name##_val_entry)                \
> > -                       || !(__intf)->__name##_val_entry)       \
> > -               goto exit;                                      \
> > +#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name)                    \
> > +({                                                                             \
> > +       if(debug->__name.read) {                                                \
> > +               (__intf)->__name##_off_entry =                                  \
> > +               debugfs_create_u32(__stringify(__name) "_offset",               \
> > +                                      S_IRUSR | S_IWUSR,                       \
> > +                                      (__intf)->register_folder,               \
> > +                                      &(__intf)->offset_##__name);             \
> > +               if (IS_ERR((__intf)->__name##_off_entry)                        \
> > +                               || !(__intf)->__name##_off_entry)               \
> > +                       goto exit;                                              \
> > +                                                                               \
> > +               (__intf)->__name##_val_entry =                                  \
> > +               debugfs_create_file(__stringify(__name) "_value",               \
> > +                                       S_IRUSR | S_IWUSR,                      \
> > +                                       (__intf)->register_folder,              \
> > +                                       (__intf), &rt2x00debug_fop_##__name);   \
> > +               if (IS_ERR((__intf)->__name##_val_entry)                        \
> > +                               || !(__intf)->__name##_val_entry)               \
> > +                       goto exit;                                              \
> > +       } else                                                                  \
> > +               DEBUG(rt2x00dev, "Unsupported register on this device: "        \
> > +                       __stringify(__name) "\n");                              \
> >  })
> 
> I don't think we need to print error messages to the log, this will
> only confuse users.
> The driver intentionally didn't register the register type, so it is
> not worth the warning to the user.
> 
> Ivo

Sure :-)

From: Anisse Astier <anisse@astier.eu>
Date: Thu, 19 Apr 2012 15:04:52 +0200
Subject: [PATCH v4 1/2] rt2x00: debugfs support - allow a register to be empty

Allow a register to be unspecified, therefore not creating its debugfs
file entry.

Signed-off-by: Anisse Astier <anisse@astier.eu>
---
Changes since v3:
 - Don't print a debug message when register type isn't registered
---
 drivers/net/wireless/rt2x00/rt2x00debug.c |   71 +++++++++++++++--------------
 1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c
index 78787fc..5bb1221 100644
--- a/drivers/net/wireless/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/rt2x00/rt2x00debug.c
@@ -624,22 +624,21 @@ static struct dentry *rt2x00debug_create_file_chipset(const char *name,
 	data += sprintf(data, "revision:\t%04x\n", intf->rt2x00dev->chip.rev);
 	data += sprintf(data, "\n");
 	data += sprintf(data, "register\tbase\twords\twordsize\n");
-	data += sprintf(data, "csr\t%d\t%d\t%d\n",
-			debug->csr.word_base,
-			debug->csr.word_count,
-			debug->csr.word_size);
-	data += sprintf(data, "eeprom\t%d\t%d\t%d\n",
-			debug->eeprom.word_base,
-			debug->eeprom.word_count,
-			debug->eeprom.word_size);
-	data += sprintf(data, "bbp\t%d\t%d\t%d\n",
-			debug->bbp.word_base,
-			debug->bbp.word_count,
-			debug->bbp.word_size);
-	data += sprintf(data, "rf\t%d\t%d\t%d\n",
-			debug->rf.word_base,
-			debug->rf.word_count,
-			debug->rf.word_size);
+#define RT2X00DEBUGFS_SPRINTF_REGISTER(__name)			\
+{								\
+	if(debug->__name.read)					\
+		data += sprintf(data, __stringify(__name)	\
+				"\t%d\t%d\t%d\n",		\
+				debug->__name.word_base,	\
+				debug->__name.word_count,	\
+				debug->__name.word_size);	\
+}
+	RT2X00DEBUGFS_SPRINTF_REGISTER(csr);
+	RT2X00DEBUGFS_SPRINTF_REGISTER(eeprom);
+	RT2X00DEBUGFS_SPRINTF_REGISTER(bbp);
+	RT2X00DEBUGFS_SPRINTF_REGISTER(rf);
+#undef RT2X00DEBUGFS_SPRINTF_REGISTER
+
 	blob->size = strlen(blob->data);
 
 	return debugfs_create_blob(name, S_IRUSR, intf->driver_folder, blob);
@@ -694,25 +693,27 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
 	if (IS_ERR(intf->register_folder) || !intf->register_folder)
 		goto exit;
 
-#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name)	\
-({								\
-	(__intf)->__name##_off_entry =				\
-	    debugfs_create_u32(__stringify(__name) "_offset",	\
-			       S_IRUSR | S_IWUSR,		\
-			       (__intf)->register_folder,	\
-			       &(__intf)->offset_##__name);	\
-	if (IS_ERR((__intf)->__name##_off_entry)		\
-			|| !(__intf)->__name##_off_entry)	\
-		goto exit;					\
-								\
-	(__intf)->__name##_val_entry =				\
-	    debugfs_create_file(__stringify(__name) "_value",	\
-				S_IRUSR | S_IWUSR,		\
-				(__intf)->register_folder,	\
-				(__intf), &rt2x00debug_fop_##__name);\
-	if (IS_ERR((__intf)->__name##_val_entry)		\
-			|| !(__intf)->__name##_val_entry)	\
-		goto exit;					\
+#define RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(__intf, __name)			\
+({										\
+	if(debug->__name.read) {						\
+		(__intf)->__name##_off_entry =					\
+		debugfs_create_u32(__stringify(__name) "_offset",		\
+				       S_IRUSR | S_IWUSR,			\
+				       (__intf)->register_folder,		\
+				       &(__intf)->offset_##__name);		\
+		if (IS_ERR((__intf)->__name##_off_entry)			\
+				|| !(__intf)->__name##_off_entry)		\
+			goto exit;						\
+										\
+		(__intf)->__name##_val_entry =					\
+		debugfs_create_file(__stringify(__name) "_value",		\
+					S_IRUSR | S_IWUSR,			\
+					(__intf)->register_folder,		\
+					(__intf), &rt2x00debug_fop_##__name);	\
+		if (IS_ERR((__intf)->__name##_val_entry)			\
+				|| !(__intf)->__name##_val_entry)		\
+			goto exit;						\
+	}									\
 })
 
 	RT2X00DEBUGFS_CREATE_REGISTER_ENTRY(intf, csr);
-- 
1.7.9.4


  reply	other threads:[~2012-04-20 15:48 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-19  9:20 [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Anisse Astier
2012-04-19  9:20 ` [PATCH RFC v2 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier
2012-04-19 11:07   ` Ivo Van Doorn
2012-04-19 13:53     ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Anisse Astier
2012-04-19 13:53       ` [PATCH v3 2/2] rt2x00: Add debugfs access for rfcsr register Anisse Astier
2012-04-20  7:03         ` Ivo Van Doorn
2012-04-20  7:03       ` [PATCH v3 1/2] rt2x00: debugfs support - allow a register to be empty Ivo Van Doorn
2012-04-20 15:48         ` Anisse Astier [this message]
2012-04-21 12:54           ` Ivo Van Doorn
2012-04-19 11:02 ` [PATCH v2 1/2] rt2800: debugfs register access: BBP is 256 bytes big Ivo Van Doorn

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=20120420174823.7a0e0921@destiny.ordissimo \
    --to=anisse@astier.eu \
    --cc=gwingerde@gmail.com \
    --cc=helmut.schaa@googlemail.com \
    --cc=ivdoorn@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=users@rt2x00.serialmonkey.com \
    /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