linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: khilman@deeprootsystems.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 01/13] OMAP: DMA: Replace read/write macros with functions
Date: Wed, 10 Nov 2010 08:03:11 -0800	[thread overview]
Message-ID: <877hgldv40.fsf@deeprootsystems.com> (raw)
In-Reply-To: <E0D41E29EB0DAC4E9F3FF173962E9E9402DC1A7CBD@dbde02.ent.ti.com> (Manjunath Kondaiah G.'s message of "Wed, 10 Nov 2010 19:31:52 +0530")

"G, Manjunath Kondaiah" <manjugk@ti.com> writes:

[...]

>> > +		if (reg > OMAP1_CH_COMMON_START)
>> > +			__raw_writew(val, dma_base +
>> > +				(reg_map_omap1[reg] + 0x40 * lch));
>> > +		else
>> > +			__raw_writew(val, dma_base + 
>> reg_map_omap1[reg]);
>> > +	} else {
>> > +		if (reg > OMAP2_CH_COMMON_START)
>> > +			__raw_writel(val, dma_base +
>> > +				(reg_map_omap2[reg] + 0x60 * lch));
>> > +		else
>> > +			__raw_writel(val, dma_base + 
>> reg_map_omap2[reg]);
>> > +	}
>> > +}
>> 
>> The register base offset, register array and the stride (offset
>> between instances: 0x40 or 0x60) are detectable at init time, and
>> there's no reason to have conditional code for them.  IOW, they
>> should be init time constants.  Doing so would greatly simply these
>> functions.  In fact the CH_COMMON_START could also be an init time
>> constant as well.  So, given the following init_time constants:
>> dma_ch_common_start, dma_stride, reg_map, the above would be reduced
>> to something actually worth inlining, for example (not actually
>> tested):
>> 
>> static inline void dma_write(u32 val, int reg, int lch)
>> {
>>         u8 stride = (reg > dma_ch_common_start) ? dma_stride : 0;
>> 
>>         __raw_writel(val, dma_base + (reg_map[reg] + stride * lch));
>> }
>> 
>> Same applies to dma_read().
>
> Thanks for the suggestion. It is taken care along with Tony's comment
> for handling these read/write's between omap1 and omap2+.
>
> Here is code snippet for handling both omap1(includes 16 bit
> registers) and omap2+ 
>
> static inline void dma_write(u32 val, int reg, int lch)
> {
>         u8  stride;
>         u32 offset;
>
>         stride = (reg >= dma_common_ch_start) ? dma_stride : 0;
>         offset = reg_map[reg] + (stride * lch);
>
>         if (dma_stride  == 0x40) {

The use of hard-coded constants still isn't right here.    This is
bascally the same as a cpu_is_omap1 check.  After you separate out the
device files, I thought you had separate omap1 and omap2+ versions of
these, so I don't follow the need for this.

>                 __raw_writew(val, omap_dma_base + offset);

This could be moved before the 'if' and the 'else' clause removed.

>                 if ((reg > CLNK_CTRL && reg < CCR2) ||
>                                 (reg > PCHD_ID && reg < CAPS_2)) {
>                         u32 offset2 = reg_map[reg] + 2 + (stride * lch);
>                         __raw_writew(val >> 16, omap_dma_base + offset2);
>                 }
>         } else
>                 __raw_writel(val, omap_dma_base + offset);
> }

Kevin

  reply	other threads:[~2010-11-10 16:03 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-26 13:25 [PATCH v3 00/13] OMAP: DMA: hwmod and DMA as platform device G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 01/13] OMAP: DMA: Replace read/write macros with functions G, Manjunath Kondaiah
2010-10-26 14:48   ` Nishanth Menon
2010-10-27  3:54     ` G, Manjunath Kondaiah
2010-10-27 14:26       ` Menon, Nishanth
2010-10-29  8:15         ` G, Manjunath Kondaiah
2010-11-09 21:37   ` Kevin Hilman
2010-11-10 14:01     ` G, Manjunath Kondaiah
2010-11-10 16:03       ` Kevin Hilman [this message]
2010-11-10 17:16         ` G, Manjunath Kondaiah
2010-11-10 17:35           ` Kevin Hilman
2010-10-26 13:25 ` [PATCH v3 02/13] OMAP: DMA: Introduce errata handling feature G, Manjunath Kondaiah
2010-11-09 22:12   ` Kevin Hilman
2010-11-10 14:02     ` G, Manjunath Kondaiah
2010-11-10 16:26       ` Kevin Hilman
2010-11-10 17:39         ` G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 03/13] OMAP: DMA: Introduce DMA device attributes G, Manjunath Kondaiah
2010-11-09 21:46   ` Kevin Hilman
2010-10-26 13:25 ` [PATCH v3 04/13] OMAP2420: DMA: hwmod: add system DMA G, Manjunath Kondaiah
2010-11-09 23:13   ` Kevin Hilman
2010-11-11 23:04     ` Kevin Hilman
2010-10-26 13:25 ` [PATCH v3 05/13] OMAP2430: " G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 06/13] OMAP3: " G, Manjunath Kondaiah
2010-11-03 12:59   ` G, Manjunath Kondaiah
2010-11-04  4:29     ` Cousson, Benoit
2010-11-04  7:01       ` G, Manjunath Kondaiah
2010-11-04 12:30         ` Cousson, Benoit
2010-11-04 15:48           ` Kevin Hilman
2010-10-26 13:25 ` [PATCH v3 07/13] OMAP4: " G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 08/13] OMAP1: DMA: Introduce DMA driver as platform device G, Manjunath Kondaiah
2010-11-09 22:23   ` Kevin Hilman
2010-11-10 14:02     ` G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 09/13] OMAP2+: DMA: hwmod: Device registration G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 10/13] OMAP: DMA: Convert DMA library into DMA platform Driver G, Manjunath Kondaiah
2010-11-09 22:26   ` Kevin Hilman
2010-11-10 14:02     ` G, Manjunath Kondaiah
2010-11-10 16:24       ` Kevin Hilman
2010-11-10 17:23         ` G, Manjunath Kondaiah
2010-11-10 17:56           ` Kevin Hilman
2010-11-09 23:29   ` Kevin Hilman
2010-11-10 14:02     ` G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 11/13] OMAP: DMA: Use DMA device attributes G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 12/13] OMAP2+: DMA: descriptor autoloading feature G, Manjunath Kondaiah
2010-10-26 13:25 ` [PATCH v3 13/13] OMAP: PM: DMA: Enable runtime pm G, Manjunath Kondaiah
2010-11-09 22:48   ` Kevin Hilman
2010-11-10 14:02     ` G, Manjunath Kondaiah
2010-11-10 16:14       ` Kevin Hilman
2010-10-27  4:57 ` [PATCH v3 00/13] OMAP: DMA: hwmod and DMA as platform device G, Manjunath Kondaiah
2010-11-09 23:11 ` Kevin Hilman
2010-11-10 14:02   ` G, Manjunath Kondaiah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877hgldv40.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).