[PATCH 6/7] spi/s3c64xx: Add support DMA engine API

Jassi Brar jassisinghbrar at gmail.com
Tue Jul 5 07:16:47 EDT 2011


On Tue, Jul 5, 2011 at 12:35 PM, Kukjin Kim <kgene.kim at samsung.com> wrote:
> Grant Likely wrote:
>>
>> On Mon, Jul 04, 2011 at 09:51:43PM +0200, Heiko Stübner wrote:
>> > Am Montag 04 Juli 2011, 19:02:17 schrieb Grant Likely:
>> > > On Mon, Jul 04, 2011 at 06:59:11PM +0200, Heiko Stübner wrote:
>> > > > Am Montag 04 Juli 2011, 18:42:51 schrieb Grant Likely:
>> > > > >
>> > > > > Wow.  A lot of #ifdefs here.  It does not look multiplatform
> friendly
>> > > > > at all.  Are the s3c2410_dma functions obsolete when DMADEV_PL330
> is
>> > > > > selected?  If so, can they be removed entirely, or are they
> required
>> > > > > to support certain hardware?
>> > > >
>> > > > The spi_s3c64xx driver can also support the SPI controller of the
>> > > > S3C2416/S3C2443 line of SoCs.
>> > > > As I'm currently working on a S3C2416 based project, my small wish
> from
>> > > > the sidelines would be to not break this support with whatever
> solution
>> > > > you will decide on :-) .
>> > >
>> > > I will not merge a patch that either breaks a platform, or requires
>> > > a compile time either/or choice of device support (enabling support
>> > > for one device should not break support for another).
>> >
>> > The patch above seems to contain the support for both SoCs (i.e.
>> s3c2410_dma_*
>> > for S3C2416 etc), so it wouldn't break the support.
>> > But this form will definitly break future multiplatform kernels when the
> 2416
>> > and some variant using the DMADEV_PL330 are selected at the same time.
>>
>> Yes, that's the breakage I'm talking about.
>>
>> > The 2416/2443 seem to be the first Samsung-SoCs to have a SPI-controller
> of
>> > this type. Implementing the DMA engine stuff for these SoCs would
> obviously
>> > solve the ifdef-problem but I don't know if this is possible to do.
>>
>> Of course it's possible, it's just software.  :-D
>>
>> If a config option is either/or then it needs to be really well
>> justified before I will accept it.  Most either/or options I've seen
>> aren't for any strong technical reason other than it was easier to
>> code that way.
>
> Hi all,
>
> Yes I know your concerns on this.
>
> First of all, please see below which is block diagram of Samsung DMA usage
> and 1st step will be finished with other patches for S5PC100 and S5PV210
> soon. Basically we need more time maybe 2 or 3 days to test on boards.
>
> +---------------------------------------------------------------------+
> | Each drivers which uses DMA                                         |
> +---------------------------------------------------------------------+
> | S3C DMA API (such as s3c2410_dma_xxxx)                              |
> +-------------------------------+-------------------------------------+
> | PL080 DMA driver              | S3C PL330 DMA API driver            |
> | for S3C24XX and S3C64XX       | (arch/arm/plat-samsung/s3c-pl330.c) |
> |                               +-------------------------------------+
> | (arch/arm/plat-s3c24xx/dma.c) | Common DMA core driver              |
> | (arch/arm/mach-s3c64xx/dma.c) | (arch/arm/common/pl330.c)           |
> +-------------------------------+-------------------------------------+
>                               ||
>          (1st step. removing S3C DMA API for PL330)
>                               ||
>                               \/
> +---------------------------------------------------------------------+
> | Each drivers which uses DMA                                         |
> +-------------------------------+-------------------------------------+
> | S3C DMA API(s3c2410_dma_xxx)  | DMA generic API for PL330           |
> +-------------------------------+-------------------------------------+
> | PL080 DMA driver              | PL330 DMA API driver                |
> | for S3C24XX and S3C64XX       | (drivers/dma/pl330.c)               |
> |                               +-------------------------------------+
> | (arch/arm/plat-s3c24xx/dma.c) | Common DMA core driver              |
> | (arch/arm/mach-s3c64xx/dma.c) | (arch/arm/common/pl330.c)           |
> +-------------------------------+-------------------------------------+
>
> As you saw, the S3C_DMA_API is still used for PL080 DMA for compatibilities
> with this patches in each driver, e.g., spi and audio. As a note, S3C24XX
> and S3C64XX include PL080 DMAC not PL330.
Not exactly.
S3C24XX  use 2-3 different versions of Samsung's DMA implementations.
S3C6400/10  use PL080
S5P and later series use PL330

>
> Of course, if we can remove every S3C_DMA_API, that can be the best solution
> but it needs more time. I'd like to go to our goal step by step.
>
Ideally, like PL330 for S5Pxxxx, drivers/dma/pl080 should be enabled for s3c64xx
And new generic dma api drivers written for S3C24xx in drivers/dma/

-j



More information about the linux-arm-kernel mailing list