From patchwork Sun Aug 18 05:56:11 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Fernandes X-Patchwork-Id: 2846159 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 50599BF546 for ; Sun, 18 Aug 2013 05:57:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 391512026F for ; Sun, 18 Aug 2013 05:57:08 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 28FCE2026C for ; Sun, 18 Aug 2013 05:57:07 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VAvz0-00074F-Ni; Sun, 18 Aug 2013 05:56:58 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VAvyy-0007nF-JH; Sun, 18 Aug 2013 05:56:56 +0000 Received: from bear.ext.ti.com ([192.94.94.41]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VAvyt-0007mt-TE for linux-arm-kernel@lists.infradead.org; Sun, 18 Aug 2013 05:56:53 +0000 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by bear.ext.ti.com (8.13.7/8.13.7) with ESMTP id r7I5uDaE023597; Sun, 18 Aug 2013 00:56:13 -0500 Received: from DLEE71.ent.ti.com (dlee71.ent.ti.com [157.170.170.114]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id r7I5uDrS003406; Sun, 18 Aug 2013 00:56:13 -0500 Received: from dlelxv22.itg.ti.com (172.17.1.197) by DLEE71.ent.ti.com (157.170.170.114) with Microsoft SMTP Server id 14.2.342.3; Sun, 18 Aug 2013 00:56:12 -0500 Received: from [172.24.0.80] (h0-80.vpn.ti.com [172.24.0.80]) by dlelxv22.itg.ti.com (8.13.8/8.13.8) with ESMTP id r7I5uCgm010289; Sun, 18 Aug 2013 00:56:12 -0500 Message-ID: <521061FB.2030504@ti.com> Date: Sun, 18 Aug 2013 00:56:11 -0500 From: Joel Fernandes User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 MIME-Version: 1.0 To: Joe Perches Subject: Re: [PATCH v2 02/14] crypto: omap-aes: Add useful debug macros References: <1376793755-30478-1-git-send-email-joelf@ti.com> <1376793755-30478-3-git-send-email-joelf@ti.com> <1376799747.2027.11.camel@joe-AO722> In-Reply-To: <1376799747.2027.11.camel@joe-AO722> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130818_015652_068572_B615B1F4 X-CRM114-Status: GOOD ( 19.08 ) X-Spam-Score: -9.6 (---------) Cc: Tony Lindgren , Rajendra Nayak , Mark Greer , Linux Kernel Mailing List , Herbert Xu , Santosh Shilimkar , Linux ARM Kernel List , Linux OMAP List , "David S. Miller" , Lokesh Vutla , Linux Crypto Mailing List X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 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 Signed-off-by: Joel Fernandes --- 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 #include @@ -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)