]> git.hungrycats.org Git - linux/commitdiff
[ARM] Add support for dev->coherent_dma_mask
authorRussell King <rmk@flint.arm.linux.org.uk>
Thu, 25 Mar 2004 17:44:51 +0000 (17:44 +0000)
committerRussell King <rmk@flint.arm.linux.org.uk>
Thu, 25 Mar 2004 17:44:51 +0000 (17:44 +0000)
This adds AMBA and SA11xx support for dev->coherent_dma_mask.

12 files changed:
arch/arm/common/amba.c
arch/arm/common/sa1111.c
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/neponset.c
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/xp860.c
include/asm-arm/hardware/amba.h

index 44269538c3c03e2f71ef8e9da2a4cfd329d0d1ff..f7ddb16e9d665044fee23c0e71e1131714156051 100644 (file)
@@ -199,8 +199,12 @@ int amba_device_register(struct amba_device *dev, struct resource *parent)
 
        dev->dev.release = amba_device_release;
        dev->dev.bus = &amba_bustype;
+       dev->dev.dma_mask = &dev->dma_mask;
        dev->res.name = dev->dev.bus_id;
 
+       if (!dev->dev.coherent_dma_mask && dev->dma_mask)
+               dev_warn(&dev->dev, "coherent dma mask is unset\n");
+
        ret = request_resource(parent, &dev->res);
        if (ret == 0) {
                tmp = ioremap(dev->res.start, SZ_4K);
index 32e1a684683a63eecffbcfe7473f4b56a6ba3452..18b6c61cd81ed68dea8666ad7b901a6fc924cb70 100644 (file)
@@ -516,6 +516,8 @@ sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
         */
        if (sachip->dev->dma_mask)
                *sachip->dev->dma_mask &= sa1111_dma_mask[drac >> 2];
+
+       sachip->dev->coherent_dma_mask &= sa1111_dma_mask[drac >> 2];
 }
 
 #endif
@@ -558,6 +560,7 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
        dev->dev.parent  = sachip->dev;
        dev->dev.bus     = &sa1111_bus_type;
        dev->dev.release = sa1111_dev_release;
+       dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask;
        dev->res.start   = sachip->phys + info->offset;
        dev->res.end     = dev->res.start + 511;
        dev->res.name    = dev->dev.bus_id;
index 43f23ae748b434bcd755d4a483c97b8a151af7ca..d028a87ce2ebb73db040012141078b86204110ff 100644 (file)
@@ -47,6 +47,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index 9dd52fa0ee00fc3d28f070864e9bef0a5433c480..71d9e165a3b67427e6c10feb2da607d421914e68 100644 (file)
@@ -55,6 +55,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask;
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index bc7d2b064e34cab9212457e461102caaca0c521e..bc14c39bb796d049b6622049d41a82f4097738bb 100644 (file)
@@ -162,6 +162,7 @@ static struct platform_device sa11x0udc_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa11x0udc_dma_mask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa11x0udc_resources),
        .resource       = sa11x0udc_resources,
@@ -212,6 +213,7 @@ static struct platform_device sa11x0mcp_device = {
        .id             = 0,
        .dev = {
                .dma_mask = &sa11x0mcp_dma_mask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa11x0mcp_resources),
        .resource       = sa11x0mcp_resources,
@@ -232,6 +234,7 @@ static struct platform_device sa11x0ssp_device = {
        .id             = 0,
        .dev = {
                .dma_mask = &sa11x0ssp_dma_mask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa11x0ssp_resources),
        .resource       = sa11x0ssp_resources,
@@ -253,6 +256,9 @@ static struct resource sa11x0fb_resources[] = {
 static struct platform_device sa11x0fb_device = {
        .name           = "sa11x0-fb",
        .id             = 0,
+       .dev = {
+               .coherent_dma_mask = 0xffffffff,
+       },
        .num_resources  = ARRAY_SIZE(sa11x0fb_resources),
        .resource       = sa11x0fb_resources,
 };
index 717c206e5c6d44106de41cf6dbcefc72bdfb5880..77d84368d7acce32b2de60184609690b3d5fc17c 100644 (file)
@@ -44,6 +44,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index 7f586c435868be52a91ac74c205b1de3648a030a..c71e512830bd6478d403f592705179390df07cb5 100644 (file)
@@ -44,6 +44,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index 4b6ad81955c80439211d3ac6059648408f0d5484..a747fd0bd89a7b700a60ed9abeb583e3c39ace38 100644 (file)
@@ -251,6 +251,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index 65a29e7e2ddcba5982b745e81a233d584e7c14c1..43b89fcc89199c3fadaacfbb7ed4aa8b7d9b0d61 100644 (file)
@@ -38,6 +38,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index fce4448eae0636834f098604c24b41165e585081..09f679e4e67b1aae89982665848f95c98450751c 100644 (file)
@@ -393,6 +393,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index e67156629765d13c1996a93980b34a3886e242de..501b1bfe8b2b0d61045ed5836cdd0576af355e37 100644 (file)
@@ -45,6 +45,7 @@ static struct platform_device sa1111_device = {
        .id             = 0,
        .dev            = {
                .dma_mask = &sa1111_dmamask,
+               .coherent_dma_mask = 0xffffffff,
        },
        .num_resources  = ARRAY_SIZE(sa1111_resources),
        .resource       = sa1111_resources,
index 17bb14bf4376735e4eedb1003fa0a8cf10398058..0cc74f7f7e0e0e92e39e973139da75033af96533 100644 (file)
@@ -15,6 +15,7 @@
 struct amba_device {
        struct device           dev;
        struct resource         res;
+       u64                     dma_mask;
        unsigned int            periphid;
        unsigned int            irq[AMBA_NR_IRQS];
 };