From patchwork Sat Aug 6 14:34:29 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: holt@sgi.com X-Patchwork-Id: 108781 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 433D0B6F71 for ; Sun, 7 Aug 2011 00:34:42 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754556Ab1HFOei (ORCPT ); Sat, 6 Aug 2011 10:34:38 -0400 Received: from relay2.sgi.com ([192.48.179.30]:60556 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750888Ab1HFOee (ORCPT ); Sat, 6 Aug 2011 10:34:34 -0400 Received: from gulag1.americas.sgi.com (gulag1.americas.sgi.com [128.162.236.41]) by relay2.corp.sgi.com (Postfix) with ESMTP id 30AEE304048; Sat, 6 Aug 2011 07:34:33 -0700 (PDT) Received: by gulag1.americas.sgi.com (Postfix, from userid 1641) id 16BE1103B520D; Sat, 6 Aug 2011 09:34:33 -0500 (CDT) From: Robin Holt To: Robin Holt , Marc Kleine-Budde , Wolfgang Grandegger , U Bhaskar-B22300 Cc: Robin Holt , socketcan-core@lists.berlios.de, netdev@vger.kernel.org Subject: [RFC 4/5] [flexcan] Add support for FLEXCAN_DEBUG Date: Sat, 6 Aug 2011 09:34:29 -0500 Message-Id: <1312641270-6018-5-git-send-email-holt@sgi.com> X-Mailer: git-send-email 1.7.2.1 In-Reply-To: <1312641270-6018-1-git-send-email-holt@sgi.com> References: <1312641270-6018-1-git-send-email-holt@sgi.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add a wrapper function for a register dump when a developer defines FLEXCAN_DEBUG. Signed-off-by: Robin Holt To: Marc Kleine-Budde To: Wolfgang Grandegger To: U Bhaskar-B22300 Cc: socketcan-core@lists.berlios.de Cc: netdev@vger.kernel.org --- drivers/net/can/flexcan.c | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index d4ac81b..c2fb829 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -215,6 +215,35 @@ static inline void flexcan_write(u32 val, void __iomem *addr) } #endif +#if defined(FLEXCAN_DEBUG) +void _flexcan_reg_dump(struct net_device *dev, const char *file, int line, + const char *func) +{ + const struct flexcan_priv *priv = netdev_priv(dev); + struct flexcan_regs __iomem *regs = priv->base; + + netdev_info("flexcan_reg_dump:%s:%d:%s()\n", file, line, func); + netdev_info("\t mcr 0x%08x ctrl 0x%08x timer 0x%08x rxg 0x%08x", + flexcan_read(®s->mcr), + flexcan_read(®s->ctrl), + flexcan_read(®s->timer), + flexcan_read(®s->rxgmask)); + netdev_info("\t rx14 0x%08x rx15 0x%08x ecr 0x%08x esr 0x%08x", + flexcan_read(®s->rx14mask), + flexcan_read(®s->rx15mask), + flexcan_read(®s->ecr), + flexcan_read(®s->esr)); + netdev_info("\timsk2 0x%08x imsk1 0x%08x iflg2 0x%08x iflg1 0x%08x", + flexcan_read(®s->imask2), + flexcan_read(®s->imask1), + flexcan_read(®s->iflag2), + flexcan_read(®s->iflag1)); +} +#define flexcan_reg_dump(_d) _flexcan_reg_dump(_d, __FILE__, __LINE__, __func__) +#else +#define flexcan_reg_dump(_d) +#endif + /* * Swtich transceiver on or off */ @@ -275,6 +304,8 @@ static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev) u32 can_id; u32 ctrl = FLEXCAN_MB_CNT_CODE(0xc) | (cf->can_dlc << 16); + flexcan_reg_dump(dev); + if (can_dropped_invalid_skb(dev, skb)) return NETDEV_TX_OK; @@ -307,6 +338,8 @@ static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev) /* tx_packets is incremented in flexcan_irq */ stats->tx_bytes += cf->can_dlc; + flexcan_reg_dump(dev); + return NETDEV_TX_OK; } @@ -575,6 +608,8 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id) struct flexcan_regs __iomem *regs = priv->base; u32 reg_iflag1, reg_esr; + flexcan_reg_dump(dev); + reg_iflag1 = flexcan_read(®s->iflag1); reg_esr = flexcan_read(®s->esr); flexcan_write(FLEXCAN_ESR_ERR_INT, ®s->esr); /* ACK err IRQ */ @@ -615,6 +650,8 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id) netif_wake_queue(dev); } + flexcan_reg_dump(dev); + return IRQ_HANDLED; }