> From: linux-usb-ow...@vger.kernel.org 
> [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of Pratyush Anand
> Sent: Thursday, September 12, 2013 8:50 PM
> 
> On Tue, Sep 10, 2013 at 02:03:15AM +0800, Xenia Ragiadakou wrote:
> > Function xhci_readl() is used to read 32bit xHC registers residing in MMIO
> > address space. It takes as first argument a pointer to the xhci_hcd although
> > it does not use it because internally it simply calls readl. This creates
> > an illusion that xhci_readl() is an xhci specific function that has to be
> > called in a context where a pointer to xhci_hcd is available.
> > This patch replaces calls to xhci_readl() with calls to readl() in 
> > xhci-dbg.c.
> > This is done so that xhci_readl() can be removed completely and code can
> > become more straight-forward.
> 
> Its fine that this replacement would simplify it. But, I have
> experienced that sometime such way of reading/writing a peripheral
> registers is quite helpful. I was able to find several issues in dwc3
> gadget isoc handling quickly because of the availability of dwc3_readl
> dwc3_writel.
> 
> With such peripheral specific exerciser one can log all register
> read/write in sequential order with timestamp with a little effort,
> which can further help in debugging critical issues. Sometime, they
> might be even helpful in diagnosis of hardware issues. Same sequence
> can be extracted and provided to hardware engineer for analysing the
> behaviour of device in simulation.

That's easy enough to do with some macro magic in xhci.h. Something like:

static inline u32 my_readl(const volatile void __iomem *addr)
{
        u32 value = readl(addr);
        /* do whatever you want with 'value' here */
        return value;
}

#undef readl
#define readl my_readl

You just need to make sure no other #include's follow xhci.h that might
override your redefinition of readl.

I used this technique in the early days of debugging dwc2.

-- 
Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to