]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: S3C24XX: split s3c2412 spi dma channels
authorHeiko Stuebner <heiko@sntech.de>
Mon, 20 May 2013 16:01:33 +0000 (01:01 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Mon, 20 May 2013 16:01:33 +0000 (01:01 +0900)
While s3c24xx before s3c2412 (2410, 2440, 2442) use one dma channel
for both sending and receiving spi data, all later s3c24xx socs use
separate channels.

To keep with the structure of "one spi channel" s3c2412 introduced
a channel_rx attribute to the map and selects the correct request
channel depending on the dma direction, hiding the underlying
separation from view.

The s3c24xx-spi driver, which would need this, currently does not
use dma at all, but as s3c2443 has both highspeed (spi0) and regular
(spi1) controllers and also uses the split scheme a future dma support
for s3c24xx-spi would in any case need to differentiate between
old-style and new-style spi channel structure.

Thus we can swtch to the split channel structure like in later socs.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/mach-s3c24xx/dma-s3c2412.c

index ab1700ec8e64f9cf3870179b4d2d2afc733e5d60..22298ea5e11181913b53790174c33dbfae0d624c 100644 (file)
@@ -47,16 +47,26 @@ static struct s3c24xx_dma_map __initdata s3c2412_dma_mappings[] = {
                .channels       = MAP(S3C2412_DMAREQSEL_SDI),
                .channels_rx    = MAP(S3C2412_DMAREQSEL_SDI),
        },
-       [DMACH_SPI0] = {
-               .name           = "spi0",
-               .channels       = MAP(S3C2412_DMAREQSEL_SPI0TX),
+       [DMACH_SPI0_RX] = {
+               .name           = "spi0-rx",
+               .channels       = MAP(S3C2412_DMAREQSEL_SPI0RX),
                .channels_rx    = MAP(S3C2412_DMAREQSEL_SPI0RX),
        },
-       [DMACH_SPI1] = {
-               .name           = "spi1",
-               .channels       = MAP(S3C2412_DMAREQSEL_SPI1TX),
+       [DMACH_SPI0_TX] = {
+               .name           = "spi0-tx",
+               .channels       = MAP(S3C2412_DMAREQSEL_SPI0TX),
+               .channels_rx    = MAP(S3C2412_DMAREQSEL_SPI0TX),
+       },
+       [DMACH_SPI1_RX] = {
+               .name           = "spi1-rx",
+               .channels       = MAP(S3C2412_DMAREQSEL_SPI1RX),
                .channels_rx    = MAP(S3C2412_DMAREQSEL_SPI1RX),
        },
+       [DMACH_SPI1_TX] = {
+               .name           = "spi1-tx",
+               .channels       = MAP(S3C2412_DMAREQSEL_SPI1TX),
+               .channels_rx    = MAP(S3C2412_DMAREQSEL_SPI1TX),
+       },
        [DMACH_UART0] = {
                .name           = "uart0",
                .channels       = MAP(S3C2412_DMAREQSEL_UART0_0),