On 08/17/2013 11:22 PM, Joe Perches wrote: > On Sat, 2013-08-17 at 21:42 -0500, Joel Fernandes wrote: >> When DEBUG is enabled, these macros can be used to print variables in integer >> and hex format, and clearly display which registers, offsets and values are >> being read/written , including printing the names of the offsets and their values. >> >> Note: >> This patch results in a checkpatch error that cannot be fixed. >> ERROR: Macros with multiple statements should be enclosed in a do - while loop >> +#define omap_aes_read(dd, offset) \ >> + __raw_readl(dd->io_base + offset); \ >> + pr_debug("omap_aes_read(" #offset ")\n"); >> >> Using do-while loop will break a lot of code such as: >> ret = omap_aes_read(..); > > That's where you use a statement expression macro > > #define omap_aes_read(dd, offset) \ > ({ \ > pr_debug("omap_aes_read("omap_aes_read(" #offset ")\n"); \ > __raw_readl((dd)->iobase + offset); \ > }) > That made things a lot simpler, thanks. Re-spinning just this patch as below: --->8--- From: Joel Fernandes <joelf@xxxxxx> Subject: [PATCH] crypto: omap-aes: Add useful debug macros When DEBUG is enabled, these macros can be used to print variables in integer and hex format, and clearly display which registers, offsets and values are being read/written , including printing the names of the offsets and their values. Using statement expression macros in read path as, Suggested-by: Joe Perches <joe@xxxxxxxxxxx> Signed-off-by: Joel Fernandes <joelf@xxxxxx> --- drivers/crypto/omap-aes.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/omap-aes.c b/drivers/crypto/omap-aes.c index ee15b0f..e26d4d4 100644 --- a/drivers/crypto/omap-aes.c +++ b/drivers/crypto/omap-aes.c @@ -13,7 +13,9 @@ * */ -#define pr_fmt(fmt) "%s: " fmt, __func__ +#define pr_fmt(fmt) "%20s: " fmt, __func__ +#define prn(num) pr_debug(#num "=%d\n", num) +#define prx(num) pr_debug(#num "=%x\n", num) #include <linux/err.h> #include <linux/module.h> @@ -172,16 +174,36 @@ struct omap_aes_dev { static LIST_HEAD(dev_list); static DEFINE_SPINLOCK(list_lock); +#ifdef DEBUG +#define omap_aes_read(dd, offset) \ +({ \ + int _read_ret; \ + _read_ret = __raw_readl(dd->io_base + offset); \ + pr_debug("omap_aes_read(" #offset "=%#x)= %#x\n", \ + offset, _read_ret); \ + _read_ret; \ +}) +#else static inline u32 omap_aes_read(struct omap_aes_dev *dd, u32 offset) { return __raw_readl(dd->io_base + offset); } +#endif +#ifdef DEBUG +#define omap_aes_write(dd, offset, value) \ + do { \ + pr_debug("omap_aes_write(" #offset "=%#x) value=%#x\n", \ + offset, value); \ + __raw_writel(value, dd->io_base + offset); \ + } while (0) +#else static inline void omap_aes_write(struct omap_aes_dev *dd, u32 offset, u32 value) { __raw_writel(value, dd->io_base + offset); } +#endif static inline void omap_aes_write_mask(struct omap_aes_dev *dd, u32 offset, u32 value, u32 mask) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html