Subject: Re: How to access DCR registers in powerpc440gx? Got err when use macro def in Linux kernel

From: Arnd Bergmann <[email-masked]>
Date: Mon, 14 Sep 2009 14:59:43 +0200

On Friday 11 September 2009, David Gibson wrote:
> On Fri, Sep 11, 2009 at 12:14:55PM +0800, g r1x wrote:
> > Now, I'm writing a DMA driver on powerpc
> > 440gx platform(2.6.26.5), as the only way to set up DMA Controller is
> > to access it's dcr registers with 'mfdcr' and 'mtdcr'.
> > 
> > I've found some dma code in Linux kernel 2.6.26.5, so I copy the code
> > u wrote to my driver module directory, and include them, but when I
> > compile my driver, gcc complains following err messages:
> 
> In current kernels we have some DCR macros that use a big table of
> pre-generated instructions in order to allow accesses to runtime
> computed DCR numbers.  But either they didn't exist in 2.6.26, or they
> have a different name, I don't remember.

The portable way to access DCRs is the API from asm/dcr.h, using dcr_map(),
dcr_read() and dcr_write().

	Arnd <><